perf: parallelize container image builds in release workflow#909
perf: parallelize container image builds in release workflow#909
Conversation
Split the monolithic build-and-release job into 6 parallel jobs: - setup: Extract version from tag/package.json - build-squid: Build + push + sign + SBOM squid image (amd64+arm64) - build-agent: Build + push + sign + SBOM agent image (amd64+arm64) - build-api-proxy: Build + push + sign + SBOM api-proxy image (amd64+arm64) - build-agent-act: Build + push + sign + SBOM agent-act image (amd64 only) - release: Create binaries, release notes, and GitHub Release All 4 image builds run in parallel after setup, and the release job waits for all builds to complete. This significantly reduces total release time since each multi-arch build takes several minutes, especially with ARM64 QEMU emulation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
|
🎬 THE END — Smoke Claude MISSION: ACCOMPLISHED! The hero saves the day! ✨ |
|
✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟 |
✅ Coverage Check PassedOverall Coverage
📁 Per-file Coverage Changes (1 files)
Coverage comparison generated by |
There was a problem hiding this comment.
Pull request overview
This PR refactors the release GitHub Actions workflow to reduce total release time by parallelizing container image builds while keeping release artifacts and GitHub Release creation gated on all builds completing.
Changes:
- Split the previous single
build-and-releasejob intosetup, 4 parallel image build jobs, and a finalreleasejob. - Route version information through
needs.setup.outputs.*so all downstream jobs consistently tag images and releases. - Move the Node/TypeScript build steps to the
releasejob (images build independently from the repo’s TypeScript build outputs).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Bun Build Test Results
Overall: PASS All Bun projects built and tested successfully with Bun v1.3.9.
|
|
Smoke Test Results ✅ GitHub MCP: Retrieved 2 merged PRs
✅ Playwright: Verified github.com title contains "GitHub" Status: PASS cc @Mossaka (PR author)
|
Go Build Test Results
Overall: PASS ✅ All Go projects built and tested successfully.
|
Node.js Build Test Results
Overall: PASS ✅ All Node.js test projects built and tested successfully.
|
Smoke Test ResultsLast 2 merged PRs:
✅ GitHub MCP: PASS Overall: PASS
|
.NET Build Test Results ✅
Overall: PASS All .NET projects successfully restored, built, and executed.
|
Deno Build Test Results
Overall: ✅ PASS All Deno tests completed successfully.
|
C++ Build Test Results
Overall: PASS ✅ All C++ projects built successfully.
|
Rust Build Test Results
Overall: PASS ✅ All Rust projects built successfully and all tests passed.
|
Java Build Test Results
Overall: PASS All Java projects compiled and tested successfully through the AWF firewall.
|
|
feat: add ARM64 multi-architecture container builds | feat: add AWF_ONE_SHOT_TOKEN_DEBUG env var for silent-by-default logging
|
Summary
build-and-releasejob into 6 jobs:setup,build-squid,build-agent,build-api-proxy,build-agent-act, andreleasesetupjobreleasejob (binaries, changelog, GitHub Release) waits for all image builds to completeMotivation
With ARM64 QEMU emulation added in #869, each multi-arch image build takes several minutes. Running all 4 sequentially made the release workflow unnecessarily slow. Parallelizing the builds cuts total time from ~4x single-build-time down to ~1x (the slowest build).
Job dependency graph
Test plan
needs.setup.outputs.*🤖 Generated with Claude Code