Skip to content

Commit b698035

Browse files
committed
fix(ci): make release workflow idempotent for re-runs
Add a pre-GoReleaser step that deletes all existing release assets, so re-triggers via workflow_dispatch never fail with 422 already_exists. Also add fail_on_unmatched_files to the softprops upload step to catch missing build artifacts early instead of silently skipping them. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
1 parent fcf0d95 commit b698035

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

.github/workflows/release.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,17 @@ jobs:
112112
id: build_date
113113
run: echo "date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT"
114114

115+
- name: Clean existing release assets (idempotent re-runs)
116+
shell: bash
117+
run: |
118+
TAG="${{ steps.tag.outputs.name }}"
119+
for asset in $(gh release view "$TAG" --json assets --jq '.assets[].name' 2>/dev/null || true); do
120+
echo "Deleting existing asset: $asset"
121+
gh release delete-asset "$TAG" "$asset" -y || true
122+
done
123+
env:
124+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125+
115126
- name: Run GoReleaser
116127
uses: goreleaser/goreleaser-action@5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89 # v7.2.2
117128
with:
@@ -193,6 +204,7 @@ jobs:
193204
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3
194205
with:
195206
tag_name: ${{ steps.tag.outputs.name }}
207+
fail_on_unmatched_files: true
196208
files: |
197209
dist/install.yaml
198210
dist/crds.yaml

0 commit comments

Comments
 (0)