feat(freebsd): publish runner-bin port + .pkg release channel#40
Draft
kjanat wants to merge 1 commit into
Draft
Conversation
Add a FreeBSD distribution channel alongside crates.io, npm, and the AUR.
The release matrix already builds and uploads `*-unknown-freebsd`
tarballs, so this reuses them (mirroring the AUR `runner-run-bin`
package) rather than recompiling:
- freebsd/runner: a prebuilt port (package `runner-bin`, amd64 + aarch64)
that installs the `runner` + `run` binaries from the GitHub release
tarballs plus bash, zsh, fish, and pwsh completions into the canonical
${LOCALBASE} autoload dirs. Checked-in Makefile/distinfo are a v0.12.0
reference snapshot (real checksums); CI overwrites them per release.
- .github/scripts/publish/freebsd-prepare.sh: bumps DISTVERSION and
regenerates distinfo (per-arch SHA256 + SIZE) from the release's
published .sha256 assets and asset metadata. amd64 is mandatory; the
experimental aarch64 build is skipped with a warning when absent.
Strict semver guard before any sed runs.
- .github/workflows/freebsd-release.yml: on release:published (and manual
workflow_dispatch + dry-run) builds the port the canonical way inside a
FreeBSD VM (make stage check-plist package) against a blobless sparse
checkout of the ports Mk/ tree, then attaches runner-freebsd-amd64.pkg
(+ .sha256) to the release. Third-party uses: pinned to commit SHAs.
- Docs: README install section (`pkg add` one-liner), freebsd/README.md,
and CHANGELOG.
Since FreeBSD has no AUR-style push-to-git remote, the installable
artifact is the .pkg on the GitHub release: `pkg add <url>`.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
runner | 8b734ab | Commit Preview URL Branch Preview URL |
Jun 04 2026, 09:34 AM |
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches✨ Simplify code
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a FreeBSD distribution channel alongside crates.io, npm, and the AUR.
The release matrix already builds and uploads
*-unknown-freebsdtarballs, so this reuses them (mirroring the AURrunner-run-binpackage) rather than recompiling.What's here
freebsd/runner/{Makefile,distinfo,pkg-descr}runner-bin(amd64 + aarch64): installsrunner/run+ bash/zsh/fish/pwsh completions into the canonical${LOCALBASE}autoload dirs. Checked-in values are a real v0.12.0 reference snapshot; CI overwrites them per release..github/scripts/publish/freebsd-prepare.shDISTVERSIONand regeneratesdistinfo(per-archSHA256+SIZE) from the release's published.sha256assets + asset metadata. amd64 is mandatory; the experimental aarch64 build is skipped with a warning when absent. Strict semver guard before anysedruns..github/workflows/freebsd-release.ymlrelease: published(and manualworkflow_dispatch+dry-run) builds the port the canonical way inside a FreeBSD VM (make stage check-plist package) against a blobless sparse checkout of the portsMk/tree, then attachesrunner-freebsd-amd64.pkg(+.sha256) to the release. Third-partyuses:pinned to commit SHAs.freebsd/README.md/ CHANGELOGpkg addone-liner.Design notes
-binparallel)..pkgon the GitHub release:pkg add https://github.com/kjanat/runner/releases/latest/download/runner-freebsd-amd64.pkg(version-less asset name →latest/downloadalways resolves).aarch64is the tier-3experimentalbuild, so it's skipped-with-warning if its asset is missing;amd64(tier-2) is mandatory.Validation done locally
freebsd-prepare.sh: bash syntax + both paths (full + aarch64-missing) tested with a stubbedgh— Makefile bump and distinfo regen are byte-correct.dprint checkclean; all Makefile recipe lines are real tabs.make stage check-plist package, so plist drift in either direction fails the build (can't silently ship a broken completions split).Couldn't verify locally
The actual
make packageruns inside a FreeBSD VM. Before a real release, run Actions →freebsd-release→ Run workflow with atag+dry-runticked to exercise the full VM build (fetch / stage / check-plist / package) without uploading.Generated by Claude Code