@@ -246,7 +246,17 @@ jobs:
246246 collect-wheels :
247247 name : Collect Wheels
248248 needs : [sanity-checks, build-linux, build-windows, build-macos, build-aarch64]
249- if : always() && !cancelled()
249+ # Only run when ALL build jobs succeed. This ensures:
250+ # 1. Incomplete wheel sets are never collected
251+ # 2. If a build fails, this job is "skipped" (not "failed")
252+ # 3. Re-running the failed build job will also trigger this job
253+ if : |
254+ always() && !cancelled() &&
255+ needs.build-linux.result == 'success' &&
256+ needs.build-windows.result == 'success' &&
257+ needs.build-macos.result == 'success' &&
258+ needs.build-aarch64.result == 'success' &&
259+ (needs.sanity-checks.result == 'success' || needs.sanity-checks.result == 'skipped')
250260 runs-on : ubuntu-latest
251261 steps :
252262 - name : Check build results
@@ -256,15 +266,8 @@ jobs:
256266 echo " Windows: ${{ needs.build-windows.result }}"
257267 echo " macOS: ${{ needs.build-macos.result }}"
258268 echo " Aarch64: ${{ needs.build-aarch64.result }}"
259-
260- # Fail if all builds failed
261- if [[ "${{ needs.build-linux.result }}" == "failure" ]] && \
262- [[ "${{ needs.build-windows.result }}" == "failure" ]] && \
263- [[ "${{ needs.build-macos.result }}" == "failure" ]] && \
264- [[ "${{ needs.build-aarch64.result }}" == "failure" ]]; then
265- echo "::error::All wheel builds failed"
266- exit 1
267- fi
269+ echo ""
270+ echo "All builds succeeded - proceeding with wheel collection"
268271
269272 - name : Download all wheel artifacts
270273 uses : actions/download-artifact@v4
0 commit comments