Skip to content

Commit 348d03c

Browse files
arman-bdclaude
andcommitted
feat: continue release workflow even if one OS build fails
Changes: - Added `fail-fast: false` to build-wheels strategy so failing builds don't cancel other OS builds - Updated publish job to run with `always()` condition so it attempts to publish whatever wheels are available - Added build status report showing which platforms succeeded/failed - Download artifacts with `continue-on-error: true` to handle partial failures gracefully - Exit with error only if no wheels are available at all This ensures that if e.g. Windows builds fail, Linux and macOS wheels will still be published 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 58e41af commit 348d03c

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

.github/workflows/release.yml

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ jobs:
4343
if: always() && (needs.test.result == 'success' || needs.test.result == 'skipped')
4444
runs-on: ${{ matrix.os }}
4545
strategy:
46+
fail-fast: false
4647
matrix:
4748
os: [ubuntu-latest, macos-latest, windows-latest]
4849

@@ -62,7 +63,7 @@ jobs:
6263
publish:
6364
name: Publish Release
6465
needs: build-wheels
65-
if: startsWith(github.ref, 'refs/tags/v')
66+
if: always() && startsWith(github.ref, 'refs/tags/v')
6667
runs-on: ubuntu-latest
6768
environment:
6869
name: PYPI_RELEASE
@@ -78,12 +79,49 @@ jobs:
7879
uses: actions/download-artifact@v4
7980
with:
8081
path: dist/
82+
pattern: wheels-*
83+
merge-multiple: false
84+
continue-on-error: true
8185

82-
- name: Flatten wheels
86+
- name: Flatten wheels and report build status
8387
run: |
8488
mkdir -p wheels
85-
find dist/ -name "*.whl" -exec cp {} wheels/ \;
86-
ls -lh wheels/
89+
90+
# Check which platforms built successfully
91+
echo "===================="
92+
echo "Build Status Report"
93+
echo "===================="
94+
95+
for os in ubuntu-latest macos-latest windows-latest; do
96+
if [ -d "dist/wheels-$os" ]; then
97+
wheel_count=$(find "dist/wheels-$os" -name "*.whl" 2>/dev/null | wc -l)
98+
if [ "$wheel_count" -gt 0 ]; then
99+
echo "✅ $os: $wheel_count wheels built"
100+
else
101+
echo "❌ $os: No wheels found"
102+
fi
103+
else
104+
echo "❌ $os: Build failed or artifacts missing"
105+
fi
106+
done
107+
108+
echo "===================="
109+
110+
# Flatten all available wheels
111+
find dist/ -name "*.whl" -exec cp {} wheels/ \; 2>/dev/null || true
112+
113+
# List wheels
114+
if [ -n "$(ls -A wheels/)" ]; then
115+
echo ""
116+
echo "Available wheels:"
117+
ls -lh wheels/
118+
echo ""
119+
echo "Total: $(ls wheels/*.whl 2>/dev/null | wc -l) wheels"
120+
else
121+
echo ""
122+
echo "⚠️ No wheels available for release"
123+
exit 1
124+
fi
87125
88126
- name: Create GitHub Release
89127
uses: softprops/action-gh-release@v1

0 commit comments

Comments
 (0)