From 8591c2c4a279069adcf535bc00f5591623779618 Mon Sep 17 00:00:00 2001 From: Lukas Wagner Date: Sun, 3 May 2026 23:08:47 +0200 Subject: [PATCH 1/3] Fix Docker workflow: version tags, auto-dispatch, and action upgrades - Remove dead `on.push.tags` trigger (tag pushes from workflows never trigger other workflows) - Dispatch `docker.yml` from `dispatch-publish.sh` with tag input - Add version resolution step to produce version-specific Docker tags (e.g. `0.1.6`) alongside `latest` - Upgrade Docker actions to Node.js 24 versions: build-push-action v7, login-action v4, metadata-action v6, setup-buildx-action v4 --- .github/workflows/docker.yml | 47 +++++++++++++------ .github/workflows/scripts/dispatch-publish.sh | 5 ++ 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ce3aef6..3e242fb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,9 +1,6 @@ name: Publish Docker Image on: - push: - tags: - - "cargo-changeset@v*" workflow_dispatch: inputs: tag: @@ -38,31 +35,31 @@ jobs: - name: Extract metadata id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | ${{ env.GHCR_IMAGE }} ${{ env.DOCKERHUB_IMAGE }} - name: Log in to GHCR - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Log in to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Build and push by digest id: build - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . platforms: ${{ matrix.platform }} @@ -93,6 +90,11 @@ jobs: contents: read packages: write steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + persist-credentials: false + - name: Download digests uses: actions/download-artifact@v8 with: @@ -101,37 +103,52 @@ jobs: merge-multiple: true - name: Log in to GHCR - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Log in to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 + + - name: Resolve version + id: version + run: | + if [[ -n "${{ inputs.tag }}" ]]; then + tag="${{ inputs.tag }}" + else + tag=$(git tag --sort=-v:refname --list 'cargo-changeset@v*' | head -n1) + fi + if [[ "$tag" =~ cargo-changeset@v(.*) ]]; then + echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" + else + echo "::error::Could not resolve version from tag: $tag" + exit 1 + fi - name: Extract metadata for GHCR id: meta-ghcr - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: ${{ env.GHCR_IMAGE }} tags: | - type=match,pattern=cargo-changeset@v(.*),group=1 + type=raw,value=${{ steps.version.outputs.version }} type=raw,value=latest - name: Extract metadata for Docker Hub id: meta-dockerhub - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: ${{ env.DOCKERHUB_IMAGE }} tags: | - type=match,pattern=cargo-changeset@v(.*),group=1 + type=raw,value=${{ steps.version.outputs.version }} type=raw,value=latest - name: Create multi-arch manifest for GHCR diff --git a/.github/workflows/scripts/dispatch-publish.sh b/.github/workflows/scripts/dispatch-publish.sh index a1f633f..a1650e2 100644 --- a/.github/workflows/scripts/dispatch-publish.sh +++ b/.github/workflows/scripts/dispatch-publish.sh @@ -49,4 +49,9 @@ while IFS=" " read -r depth crate; do echo "Dispatching publish for $tag (depth=$depth)" gh workflow run publish.yml --repo "$GITHUB_REPOSITORY" --ref "refs/tags/$tag" + if [ "$crate" = "cargo-changeset" ]; then + echo "Dispatching docker for $tag (depth=$depth)" + gh workflow run docker.yml --repo "$GITHUB_REPOSITORY" -f "tag=$tag" + fi + done <<< "$depth_order" From 34b966e9c965f65ab6111974e6eae02dee120cb5 Mon Sep 17 00:00:00 2001 From: Lukas Wagner Date: Sun, 3 May 2026 23:13:05 +0200 Subject: [PATCH 2/3] Restore on.push.tags trigger for manual tag pushes --- .github/workflows/docker.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 3e242fb..c7bee2e 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,6 +1,9 @@ name: Publish Docker Image on: + push: + tags: + - "cargo-changeset@v*" workflow_dispatch: inputs: tag: From 126f4282a430f7aa737e57d191aea5d8ee009e08 Mon Sep 17 00:00:00 2001 From: Lukas Wagner Date: Sun, 3 May 2026 23:23:32 +0200 Subject: [PATCH 3/3] Fix Docker workflow: auto-dispatch and action upgrades Dispatch docker.yml from dispatch-publish.sh with --ref pointing to the release tag so version-specific Docker tags are produced automatically. Upgrade Docker actions to Node.js 24 versions: build-push-action v7, login-action v4, metadata-action v6, setup-buildx-action v4. Remove unused inputs.tag from workflow_dispatch. --- .github/workflows/docker.yml | 28 ++----------------- .github/workflows/scripts/dispatch-publish.sh | 2 +- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c7bee2e..a6b538c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -5,10 +5,6 @@ on: tags: - "cargo-changeset@v*" workflow_dispatch: - inputs: - tag: - description: "Tag to publish (e.g. cargo-changeset@v0.1.0). Uses latest git tag if empty." - required: false env: GHCR_IMAGE: ghcr.io/lukidoescode/cargo-changeset @@ -93,11 +89,6 @@ jobs: contents: read packages: write steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - persist-credentials: false - - name: Download digests uses: actions/download-artifact@v8 with: @@ -121,28 +112,13 @@ jobs: - name: Set up Buildx uses: docker/setup-buildx-action@v4 - - name: Resolve version - id: version - run: | - if [[ -n "${{ inputs.tag }}" ]]; then - tag="${{ inputs.tag }}" - else - tag=$(git tag --sort=-v:refname --list 'cargo-changeset@v*' | head -n1) - fi - if [[ "$tag" =~ cargo-changeset@v(.*) ]]; then - echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" - else - echo "::error::Could not resolve version from tag: $tag" - exit 1 - fi - - name: Extract metadata for GHCR id: meta-ghcr uses: docker/metadata-action@v6 with: images: ${{ env.GHCR_IMAGE }} tags: | - type=raw,value=${{ steps.version.outputs.version }} + type=match,pattern=cargo-changeset@v(.*),group=1 type=raw,value=latest - name: Extract metadata for Docker Hub @@ -151,7 +127,7 @@ jobs: with: images: ${{ env.DOCKERHUB_IMAGE }} tags: | - type=raw,value=${{ steps.version.outputs.version }} + type=match,pattern=cargo-changeset@v(.*),group=1 type=raw,value=latest - name: Create multi-arch manifest for GHCR diff --git a/.github/workflows/scripts/dispatch-publish.sh b/.github/workflows/scripts/dispatch-publish.sh index a1650e2..87e0622 100644 --- a/.github/workflows/scripts/dispatch-publish.sh +++ b/.github/workflows/scripts/dispatch-publish.sh @@ -51,7 +51,7 @@ while IFS=" " read -r depth crate; do if [ "$crate" = "cargo-changeset" ]; then echo "Dispatching docker for $tag (depth=$depth)" - gh workflow run docker.yml --repo "$GITHUB_REPOSITORY" -f "tag=$tag" + gh workflow run docker.yml --repo "$GITHUB_REPOSITORY" --ref "refs/tags/$tag" fi done <<< "$depth_order"