Skip to content

Build and publish a prebuilt release binary on tag push - #17

Merged
silentswordfish merged 2 commits into
mainfrom
release-binary-workflow
Sep 19, 2026
Merged

silentswordfish merged 2 commits into
mainfrom
release-binary-workflow

Conversation

@silentswordfish

@silentswordfish silentswordfish commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Renames update-homebrew-tap.yml to release.yml and adds a build job that compiles a universal (arm64+x86_64) release binary, packages it with SWBBuildServiceBundle and swift-build's resource bundles, and publishes the tarball as a GitHub Release asset.
  • update-tap now points the Homebrew formula's url/sha256 at that release asset instead of re-hashing the source archive, so brew install can switch to a prebuilt binary. Companion tap PR (source unpack instead of swift build): Distribute a prebuilt binary instead of building from source homebrew-tap#14

Test plan

  • swift build --configuration release --arch arm64 --arch x86_64 --disable-sandbox locally; confirmed universal, ad-hoc-signed binary via lipo -info / codesign -dv.
  • Copied the binary + all resource bundles to a separate directory and confirmed sourcekit-xcode-bsp --help still runs, proving the co-located-service lookup survives relocation.
  • End-to-end: push the 0.1.0 tag once this merges, confirm the workflow builds/publishes/opens the tap PR with a real sha256.

🤖 Generated with Claude Code

Adds a build job to what was update-homebrew-tap.yml: it compiles a
universal (arm64+x86_64) release binary, packages it with the
SWBBuildServiceBundle executable and swift-build's resource bundles,
verifies the tarball runs after being extracted elsewhere, and
publishes it as a GitHub Release asset. The existing tap-update job
now points the Homebrew formula at that asset instead of re-hashing
the source archive on every tag, so `brew install` can switch from
building from source to unpacking a prebuilt binary.
Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
- Verify both staged executables are actually universal via lipo -info
  instead of relying on --help, which returns before Serve.run() and
  never exercises the co-located SWBBuildServiceBundle lookup or would
  catch a single-arch artifact.
- Derive the product directory from `swift build --show-bin-path`
  instead of hardcoding .build/apple/Products/Release.
- Let the publish step tolerate a release that already exists (upload
  instead of create), so a rerun after update-tap fails doesn't die
  trying to recreate it.
@silentswordfish
silentswordfish merged commit 726ce70 into main Sep 19, 2026
2 checks passed
@silentswordfish
silentswordfish deleted the release-binary-workflow branch September 19, 2026 20:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants