From 0a3511b72e52e5bad47db30b526f48ca7dc19206 Mon Sep 17 00:00:00 2001 From: Ilyes512 Date: Sat, 19 Sep 2026 00:10:04 +0200 Subject: [PATCH 1/2] fix(go-cli): stop publishing a moving 0.0 tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `{{major}}` is already withheld for `v0.*` because a moving `1` promises compatibility that semver does not make below 1.0. The same argument applies one level down: under `v0.0.*` every release is free to break, so a moving `0.0` is a promise nothing backs. Guards `{{major}}.{{minor}}` on the tag not starting `v0.0.`, mirroring the existing `{{major}}` guard. `v0.5.3` still publishes `0.5`, since patches within `0.5.x` are expected to be compatible. Prereleases are unaffected — metadata-action already collapses every semver pattern to the full version for them, so they never produced `0.0` to begin with. --- .github/workflows/merge-go-cli.yml | 2 +- docs/go-cli.md | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/merge-go-cli.yml b/.github/workflows/merge-go-cli.yml index 647be98..2625419 100644 --- a/.github/workflows/merge-go-cli.yml +++ b/.github/workflows/merge-go-cli.yml @@ -74,7 +74,7 @@ jobs: ${{ inputs.flavor }} raw-tags: | type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}}.{{minor}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.0.') }} type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }} type=raw,value=${{ inputs.variant || 'latest' }},suffix=,enable=${{ inputs.latest && startsWith(github.ref, 'refs/tags/') && !contains(github.ref_name, '-') }} ${{ inputs.raw-tags }} diff --git a/docs/go-cli.md b/docs/go-cli.md index e2ff796..1040f14 100644 --- a/docs/go-cli.md +++ b/docs/go-cli.md @@ -90,7 +90,7 @@ On top of what [`merge.yml` already emits](pipeline.md#tags): | Tag | When | |------------------------------|------------------------------------------------------------------------| | `1.2.3` | Every `v*` tag, prereleases included | -| `1.2`, `1` | Stable tags only; `1` is skipped for `v0.*`, where it means nothing | +| `1.2`, `1` | Stable tags only; `1` is skipped for `v0.*` and `1.2` for `v0.0.*` | | `latest` | Stable tags only — set `latest: false` to never move it | | `v1.2.3` | From `merge.yml`'s `type=ref,event=tag`; the same digest, `v`-prefixed | | `main`, `pr-12`, `` | From `merge.yml`, for branch, pull request and dispatch runs | @@ -104,6 +104,11 @@ A prerelease never moves `latest` and never publishes `1.2` or `1`: That guard treats any tag containing a `-` as a prerelease — `v1.2.0-rc.1`, `v1.2.0-beta.3`. +A moving tag is a compatibility promise, so it is withheld where semver does not make one. `1` means nothing under +`v0.*` — every minor may break. `1.2` means nothing under `v0.0.*` for the same reason one level down, since `0.0.x` is +the range where every release is free to break. `v0.5.3` still publishes `0.5`, because patches within `0.5.x` are +expected to be compatible. + Both `flavor` and `raw-tags` are still available and are appended *after* what this workflow sets, so a caller can override the flavor (`latest=auto` restores the default behaviour) and add tags of its own. From 3b00c6565fafcecda6dfd3532b851330b8a12664 Mon Sep 17 00:00:00 2001 From: Ilyes512 Date: Sat, 19 Sep 2026 00:17:38 +0200 Subject: [PATCH 2/2] Bump internal version reference to 2.4.2 --- .github/workflows/build.yml | 2 +- .github/workflows/merge.yml | 2 +- README.md | 2 +- docs/actions.md | 4 ++-- docs/go-cli.md | 8 ++++---- docs/php.md | 4 ++-- docs/testing-images.md | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 47010e5..dfb925a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -85,7 +85,7 @@ jobs: uses: docker/setup-buildx-action@v4 - name: Build and Push by digest - uses: specsnl/github-actions/build-image@2.4.0 + uses: specsnl/github-actions/build-image@2.4.2 with: dockerfile: ${{ inputs.dockerfile }} context: ${{ inputs.context }} diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index 2fb0d04..2331c53 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -67,7 +67,7 @@ jobs: uses: docker/setup-buildx-action@v4 - name: Create Manifest - uses: specsnl/github-actions/create-manifest@2.4.0 + uses: specsnl/github-actions/create-manifest@2.4.2 with: image-name: ${{ steps.image_name.outputs.lowercase }} target: ${{ inputs.target }} diff --git a/README.md b/README.md index 2c677cb..f11869a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ This repository contains the Specsnl organisation collection of GitHub Actions workflows and composite actions that can be reused to automate various tasks in GitHub repositories. -Consumers pin by tag, i.e. `specsnl/github-actions/.github/workflows/build.yml@2.4.0`. +Consumers pin by tag, i.e. `specsnl/github-actions/.github/workflows/build.yml@2.4.2`. ## What is in here diff --git a/docs/actions.md b/docs/actions.md index cbb12b3..1d25567 100644 --- a/docs/actions.md +++ b/docs/actions.md @@ -9,7 +9,7 @@ Both assume the job has already checked out, logged in to the registry and set u ## `build-image` ```yaml -- uses: specsnl/github-actions/build-image@2.4.0 +- uses: specsnl/github-actions/build-image@2.4.2 ``` | Input | Default | Description | @@ -42,7 +42,7 @@ about conflicting outputs. With `load` on, the digest export and artifact upload ## `create-manifest` ```yaml -- uses: specsnl/github-actions/create-manifest@2.4.0 +- uses: specsnl/github-actions/create-manifest@2.4.2 ``` | Input | Default | Description | diff --git a/docs/go-cli.md b/docs/go-cli.md index 1040f14..839dab9 100644 --- a/docs/go-cli.md +++ b/docs/go-cli.md @@ -21,7 +21,7 @@ permissions: jobs: build: - uses: specsnl/github-actions/.github/workflows/build-go-cli.yml@2.4.0 + uses: specsnl/github-actions/.github/workflows/build-go-cli.yml@2.4.2 strategy: fail-fast: false matrix: @@ -39,7 +39,7 @@ jobs: merge: needs: build - uses: specsnl/github-actions/.github/workflows/merge-go-cli.yml@2.4.0 + uses: specsnl/github-actions/.github/workflows/merge-go-cli.yml@2.4.2 with: runs-on: ubuntu-24.04 image-name: ghcr.io/specsnl/specs-cli @@ -123,7 +123,7 @@ Run the build and merge jobs once per variant, each with its own `target`: ```yaml build-alpine: - uses: specsnl/github-actions/.github/workflows/build-go-cli.yml@2.4.0 + uses: specsnl/github-actions/.github/workflows/build-go-cli.yml@2.4.2 strategy: fail-fast: false matrix: @@ -141,7 +141,7 @@ Run the build and merge jobs once per variant, each with its own `target`: merge-alpine: needs: build-alpine - uses: specsnl/github-actions/.github/workflows/merge-go-cli.yml@2.4.0 + uses: specsnl/github-actions/.github/workflows/merge-go-cli.yml@2.4.2 with: runs-on: ubuntu-24.04 image-name: ghcr.io/specsnl/specs-cli diff --git a/docs/php.md b/docs/php.md index 9f1ef15..b9b687d 100644 --- a/docs/php.md +++ b/docs/php.md @@ -8,7 +8,7 @@ what name. jobs: build: - uses: specsnl/github-actions/.github/workflows/build-php.yml@2.4.0 + uses: specsnl/github-actions/.github/workflows/build-php.yml@2.4.2 strategy: fail-fast: false matrix: @@ -24,7 +24,7 @@ jobs: merge: needs: build - uses: specsnl/github-actions/.github/workflows/merge-php.yml@2.4.0 + uses: specsnl/github-actions/.github/workflows/merge-php.yml@2.4.2 with: runs-on: ubuntu-24.04 image-name: ghcr.io/${{ github.repository }} diff --git a/docs/testing-images.md b/docs/testing-images.md index 43eb6b8..a82f858 100644 --- a/docs/testing-images.md +++ b/docs/testing-images.md @@ -21,7 +21,7 @@ jobs: - uses: docker/setup-buildx-action@v4 - id: build - uses: specsnl/github-actions/build-image@2.4.0 + uses: specsnl/github-actions/build-image@2.4.2 with: platform: linux/amd64 image-name: ghcr.io/specsnl/specs-cli