From 839d8df84255a024358bcc548101684a25573d9e Mon Sep 17 00:00:00 2001 From: addshore Date: Mon, 28 Sep 2026 23:41:59 +0100 Subject: [PATCH] Add MediaWiki image build info Bug: T356390 --- .github/workflows/docker.build.yml | 7 +++++++ Dockerfile | 6 ++++++ dist-persist/wbstack/src/Settings/Hooks.php | 11 +++++++++++ dist/wbstack/src/Settings/Hooks.php | 11 +++++++++++ 4 files changed, 35 insertions(+) diff --git a/.github/workflows/docker.build.yml b/.github/workflows/docker.build.yml index 89c6e2e17e..addf4a6726 100644 --- a/.github/workflows/docker.build.yml +++ b/.github/workflows/docker.build.yml @@ -21,6 +21,10 @@ jobs: images: ghcr.io/${{ github.repository }} tags: | type=sha + - + name: Set image build timestamp + id: build_metadata + run: echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_OUTPUT" - name: Set up QEMU uses: docker/setup-qemu-action@v4.2.0 @@ -55,6 +59,9 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} + build-args: | + WBSTACK_IMAGE_BUILD_DATE=${{ steps.build_metadata.outputs.build_date }} + WBSTACK_IMAGE_REVISION=${{ github.sha }} - name: Check out `wmde/wbaas-deploy` repository in staging child directory if: github.event_name != 'pull_request' diff --git a/Dockerfile b/Dockerfile index f12d76bd45..907e3b9697 100644 --- a/Dockerfile +++ b/Dockerfile @@ -134,4 +134,10 @@ ARG LOCALIZATION_CACHE_THREAD_COUNT=1 ARG LOCALIZATION_CACHE_ADDITIONAL_PARAMS RUN WBS_DOMAIN=maint php ./w/maintenance/rebuildLocalisationCache.php --threads=${LOCALIZATION_CACHE_THREAD_COUNT} ${LOCALIZATION_CACHE_ADDITIONAL_PARAMS} +# Preserve build provenance in the runtime environment for MediaWiki hooks. +ARG WBSTACK_IMAGE_BUILD_DATE=unknown +ARG WBSTACK_IMAGE_REVISION=unknown +ENV WBSTACK_IMAGE_BUILD_DATE=${WBSTACK_IMAGE_BUILD_DATE} \ + WBSTACK_IMAGE_REVISION=${WBSTACK_IMAGE_REVISION} + LABEL org.opencontainers.image.source="https://github.com/wbstack/mediawiki" diff --git a/dist-persist/wbstack/src/Settings/Hooks.php b/dist-persist/wbstack/src/Settings/Hooks.php index 654e7cb242..e1bd441c0c 100644 --- a/dist-persist/wbstack/src/Settings/Hooks.php +++ b/dist-persist/wbstack/src/Settings/Hooks.php @@ -2,6 +2,17 @@ use MediaWiki\MediaWikiServices; +//// Expose immutable image build provenance on Special:Version. +$wgHooks['SoftwareInfo'][] = static function ( &$software ) { + foreach ( [ + 'WBStack image build' => 'WBSTACK_IMAGE_BUILD_DATE', + 'WBStack image version' => 'WBSTACK_IMAGE_REVISION', + ] as $name => $environmentVariable ) { + $value = getenv( $environmentVariable ); + $software[$name] = $value === false || trim( $value ) === '' ? 'unknown' : trim( $value ); + } +}; + //// CUSTOM Sidebar for WBStack // https://www.mediawiki.org/wiki/Manual:Hooks/SkinBuildSidebar $wgHooks['SkinBuildSidebar'][] = function ( $skin, &$sidebar ) use ( $wikiInfo ) { diff --git a/dist/wbstack/src/Settings/Hooks.php b/dist/wbstack/src/Settings/Hooks.php index 654e7cb242..e1bd441c0c 100644 --- a/dist/wbstack/src/Settings/Hooks.php +++ b/dist/wbstack/src/Settings/Hooks.php @@ -2,6 +2,17 @@ use MediaWiki\MediaWikiServices; +//// Expose immutable image build provenance on Special:Version. +$wgHooks['SoftwareInfo'][] = static function ( &$software ) { + foreach ( [ + 'WBStack image build' => 'WBSTACK_IMAGE_BUILD_DATE', + 'WBStack image version' => 'WBSTACK_IMAGE_REVISION', + ] as $name => $environmentVariable ) { + $value = getenv( $environmentVariable ); + $software[$name] = $value === false || trim( $value ) === '' ? 'unknown' : trim( $value ); + } +}; + //// CUSTOM Sidebar for WBStack // https://www.mediawiki.org/wiki/Manual:Hooks/SkinBuildSidebar $wgHooks['SkinBuildSidebar'][] = function ( $skin, &$sidebar ) use ( $wikiInfo ) {