runfabric

Build and release

Quick navigation

Quick reference

Task Command
Build local binaries make build
Run tests make test
Pre-release check (build + test) make release-check
Show version make version or ./bin/runfabric -v
Local release artifacts (no publish) goreleaser release --snapshot --clean
Cut a release (from local) See Release from local below

Version

Go CLI build

make build          # → bin/runfabric, bin/runfabricd, and bin/runfabricw (version from VERSION file)
make release-check  # build + go build ./... + go test ./...
make clean          # remove bin/ and go caches

The binaries are built with -trimpath and ldflags for platform/core/model.Version.

Binary intent:

SDKs

Release from local

Releases are triggered by pushing a version tag; CI then builds artifacts and publishes.

1. Pre-release

2. Tag and push (triggers CI release)

From repo root:

make release-tag

3. What happens in CI

On push of a tag matching v*, .github/workflows/release.yml runs:

4. Optional: local snapshot (no publish)

To build release-style artifacts locally without publishing:

goreleaser release --snapshot --clean   # outputs in dist/

To build all platform binaries and pack the npm package locally (for testing):

make build-all-platforms
mkdir -p packages/node/cli/bin && (for f in bin/runfabric-*; do [ -f "$f" ] && cp "$f" packages/node/cli/bin/; done) && [ -n "$(ls -A packages/node/cli/bin 2>/dev/null)" ] || cp bin/runfabric packages/node/cli/bin/
cd packages/node/cli && npm pack
cd ../sdk && npm pack

Note: runfabricd and runfabricw binaries are built for daemon/worker usage and GitHub release artifacts, but they are not packaged into the Node CLI wrapper.

Release (CI) summary

  1. Update VERSION, CHANGELOG.md, and **release-notes/.md**.
  2. Commit, then run make release-check.
  3. Run make release-tag.
  4. CI runs .github/workflows/release.yml (goreleaser + npm publish). Ensure NPM_TOKEN is set in repo secrets for npm publish.

See RELEASE_PROCESS.md for release notes signing and full steps.