diff --git a/.gitea/workflows/docker-publish.yml b/.gitea/workflows/docker-publish.yml index 76e665f..2591d84 100644 --- a/.gitea/workflows/docker-publish.yml +++ b/.gitea/workflows/docker-publish.yml @@ -600,6 +600,13 @@ jobs: -u ${{ vars.DOCKERHUB_USERNAME }} \ -p "${{ secrets.DOCKERHUB_TOKEN }}" - name: Re-tag base- as base-latest (only if stale) + # shell: bash is REQUIRED — Gitea Actions' default step shell is + # `sh -e {0}` (dash), which rejects `set -o pipefail` with + # "Illegal option -o pipefail" and aborts the step before the + # crane digest-compare runs, leaving base-latest un-promoted. + # Same footgun as ed49b8d (resolve-versions). Regression shipped + # in b7197e8, caught on the v1.2.4 release (run 418). + shell: bash env: BASE_HASH_REF: ${{ env.IMAGE }}:${{ needs.base-decide.outputs.base_tag }} BASE_LATEST_REF: ${{ env.IMAGE }}:base-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e45df3..8ded665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,22 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`). --- +## Unreleased + +### Fixed (CI) + +- **`promote-base-latest` now sets `shell: bash` on the base-latest re-tag + step.** The `b7197e8` fix (v1.2.4) moved the digest-compare into that step + with `set -euo pipefail`, but Gitea Actions' default step shell is `sh` + (dash), which rejects `-o pipefail` (`Illegal option -o pipefail`) and aborts + the step before the `crane copy` runs. On the v1.2.4 release (run 418) this + left `base-latest` un-promoted, still pointing at the v1.2.3 base — the four + consumer tags (`v1.2.4`, `latest`, `v1.2.4-studio`, `latest-studio`) were + unaffected because they `FROM` the exact `base-`, not `base-latest`. + Same footgun as `ed49b8d` (`resolve-versions needs shell: bash`). + +--- + ## v1.2.4 — 2026-06-29 Patch release. Headline: **pi `0.80.2` → `0.80.3`** (npm `latest`). Also ships a