From 38d8832d34ae346ea2cedaa9de43984380be254d Mon Sep 17 00:00:00 2001 From: pi Date: Mon, 13 Jul 2026 17:59:59 +0200 Subject: [PATCH] ci: record pi-studio version as image label Adds se.jordbo.pi-devbox.pi-studio-version (e.g. v0.9.36) alongside the existing SHA label, so 'docker inspect' shows the human-readable version. Plumbing: resolve-versions exposes studio_tag output -> both studio build steps pass --build-arg PI_STUDIO_VERSION -> Dockerfile.variant declares ARG PI_STUDIO_VERSION=none and emits the LABEL. Studio-variant only. Validated: yq parse OK, resolve run-script bash -n OK. No tag. --- .gitea/workflows/docker-publish.yml | 5 +++++ CHANGELOG.md | 6 ++++-- Dockerfile.variant | 7 ++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/docker-publish.yml b/.gitea/workflows/docker-publish.yml index 96efa72..55b9231 100644 --- a/.gitea/workflows/docker-publish.yml +++ b/.gitea/workflows/docker-publish.yml @@ -135,6 +135,7 @@ jobs: toolkit_ref: ${{ steps.resolve.outputs.toolkit_ref }} extensions_ref: ${{ steps.resolve.outputs.extensions_ref }} studio_ref: ${{ steps.resolve.outputs.studio_ref }} + studio_tag: ${{ steps.resolve.outputs.studio_tag }} mempalace_toolkit_ref: ${{ steps.resolve.outputs.mempalace_toolkit_ref }} steps: - name: Resolve pi version + companion refs @@ -227,6 +228,7 @@ jobs: fi require_sha PI_STUDIO_REF "$STUDIO_REF" echo "studio_ref=${STUDIO_REF}" >> "$GITHUB_OUTPUT" + echo "studio_tag=${STUDIO_TAG}" >> "$GITHUB_OUTPUT" echo "Resolved PI_VERSION=${PI_VERSION}" echo "Resolved PI_FORK_REF=${FORK_REF}, PI_OBSMEM_REF=${OBSMEM_REF}" @@ -413,6 +415,7 @@ jobs: PI_EXTENSIONS_REF=${{ needs.resolve-versions.outputs.extensions_ref }} INSTALL_STUDIO=true PI_STUDIO_REF=${{ needs.resolve-versions.outputs.studio_ref }} + PI_STUDIO_VERSION=${{ needs.resolve-versions.outputs.studio_tag }} MEMPALACE_TOOLKIT_REF=${{ needs.resolve-versions.outputs.mempalace_toolkit_ref }} RELEASE_TAG=smoke-studio SOURCE_REVISION=${{ github.sha }} @@ -554,6 +557,7 @@ jobs: TOOLKIT_REF: ${{ needs.resolve-versions.outputs.toolkit_ref }} EXTENSIONS_REF: ${{ needs.resolve-versions.outputs.extensions_ref }} STUDIO_REF: ${{ needs.resolve-versions.outputs.studio_ref }} + STUDIO_TAG: ${{ needs.resolve-versions.outputs.studio_tag }} MEMPALACE_TOOLKIT_REF: ${{ needs.resolve-versions.outputs.mempalace_toolkit_ref }} run: | set -euo pipefail @@ -576,6 +580,7 @@ jobs: --build-arg "MEMPALACE_TOOLKIT_REF=${MEMPALACE_TOOLKIT_REF}" \ --build-arg "INSTALL_STUDIO=true" \ --build-arg "PI_STUDIO_REF=${STUDIO_REF}" \ + --build-arg "PI_STUDIO_VERSION=${STUDIO_TAG}" \ --build-arg "RELEASE_TAG=${RELEASE_TAG}" \ --build-arg "BUILD_DATE=${BUILD_DATE}" \ --build-arg "SOURCE_REVISION=${GITHUB_SHA:-}" \ diff --git a/CHANGELOG.md b/CHANGELOG.md index 737e2de..6d179e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,8 +45,10 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`). excluded by a strict filter), and pins that tag's commit SHA into `PI_STUDIO_REF`. Pinning the SHA (not the moving tag) preserves cache-busting and reproducibility, is what `require_sha` demands, and is recorded in the - `se.jordbo.pi-devbox.pi-studio-ref` image label. Studio-variant only — not - base-affecting; takes effect on the next `-studio` build. No change to the + `se.jordbo.pi-devbox.pi-studio-ref` image label. The human-readable tag (e.g. + `v0.9.36`) is now also recorded in a new `se.jordbo.pi-devbox.pi-studio-version` + label for at-a-glance identification (`docker inspect`). Studio-variant only — + not base-affecting; takes effect on the next `-studio` build. No change to the resolved commit today (`v0.9.36` == current `main` HEAD). ### Fixed diff --git a/Dockerfile.variant b/Dockerfile.variant index e303afd..77ec899 100644 --- a/Dockerfile.variant +++ b/Dockerfile.variant @@ -158,6 +158,10 @@ RUN if [ -f /opt/pi-toolkit/pi-global-AGENTS.md ] && \ ARG INSTALL_STUDIO=false ARG PI_STUDIO_REPO=https://github.com/omaclaren/pi-studio.git ARG PI_STUDIO_REF=main +# PI_STUDIO_VERSION is the human-readable tag (e.g. v0.9.36) that PI_STUDIO_REF +# was resolved from; recorded as a label below for at-a-glance identification. +# Only meaningful for the studio variant (default `none` otherwise). +ARG PI_STUDIO_VERSION=none RUN if [ "${INSTALL_STUDIO}" = "true" ]; then \ set -e; \ rm -rf /opt/pi-studio && mkdir -p /opt/pi-studio && \ @@ -225,7 +229,8 @@ LABEL org.opencontainers.image.version="${RELEASE_TAG}" \ se.jordbo.pi-devbox.pi-fork-ref="${PI_FORK_REF}" \ se.jordbo.pi-devbox.pi-obsmem-ref="${PI_OBSMEM_REF}" \ se.jordbo.pi-devbox.mempalace-toolkit-ref="${MEMPALACE_TOOLKIT_REF}" \ - se.jordbo.pi-devbox.pi-studio-ref="${PI_STUDIO_REF}" + se.jordbo.pi-devbox.pi-studio-ref="${PI_STUDIO_REF}" \ + se.jordbo.pi-devbox.pi-studio-version="${PI_STUDIO_VERSION}" # The manifest is written from GROUND TRUTH — the actual checked-out HEAD # of each /opt clone and the live `pi --version` — not merely the intended