fix: resolve race condition in GitHub Actions workflow
- Use artifact pattern instead of parallel release uploads - Build jobs upload artifacts, single release job creates release - Eliminates "already_exists" race condition - All binaries now included in release properly
This commit is contained in:
@@ -61,28 +61,45 @@ jobs:
|
|||||||
|
|
||||||
- name: Prepare binary
|
- name: Prepare binary
|
||||||
shell: bash
|
shell: bash
|
||||||
id: prepare_binary
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p dist
|
|
||||||
|
|
||||||
# Set binary name based on OS and architecture
|
# Set binary name based on OS and architecture
|
||||||
BINARY_NAME="shush-${{ matrix.platform.os }}-${{ matrix.platform.arch }}"
|
BINARY_NAME="shush-${{ matrix.platform.os }}-${{ matrix.platform.arch }}"
|
||||||
|
|
||||||
# Copy and rename binary
|
# Copy and rename binary
|
||||||
cp shush "dist/${BINARY_NAME}"
|
cp shush "${BINARY_NAME}"
|
||||||
|
|
||||||
# For macOS x86_64, also provide a generic "shush" binary
|
# For macOS x86_64, also provide a generic "shush" binary
|
||||||
if [ "${{ matrix.platform.os }}" = "darwin" ] && [ "${{ matrix.platform.arch }}" = "x86_64" ]; then
|
if [ "${{ matrix.platform.os }}" = "darwin" ] && [ "${{ matrix.platform.arch }}" = "x86_64" ]; then
|
||||||
cp shush "dist/shush"
|
cp shush "shush"
|
||||||
echo "asset_paths=dist/shush,dist/${BINARY_NAME}" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "asset_paths=dist/${BINARY_NAME}" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload binaries to release
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: shush-${{ matrix.platform.os }}-${{ matrix.platform.arch }}
|
||||||
|
path: shush*
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: Create Release
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Download all artifacts
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
|
||||||
|
- name: Prepare release assets
|
||||||
|
run: |
|
||||||
|
mkdir -p release-assets
|
||||||
|
find artifacts -name "shush*" -type f -exec cp {} release-assets/ \;
|
||||||
|
ls -la release-assets/
|
||||||
|
|
||||||
|
- name: Create release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
files: ${{ steps.prepare_binary.outputs.asset_paths }}
|
files: release-assets/*
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
env:
|
env:
|
||||||
|
|||||||
Reference in New Issue
Block a user