Skip to main content

Releases and containers

make release checks a clean working tree and an upstream-synchronized branch, then creates and pushes a vX.Y.Z tag. It does not build, install dependencies or run tests locally. The release workflow requires successful push CI for that commit, then builds the deployable artifacts. It does not rerun the full stack verification suite.

Version contract​

The vX.Y.Z tag is the source of truth for the server, container, all 13 public @backplane-labs/backplane-* packages and documentation. No package-version edit or version-bump commit is required before make release.

CI stamps the tag version into its checkout before dependency installation and build. It updates package versions and internal workspace dependency references together, including the module template. Documentation build versions and usage examples receive the same version. The publication job stamps its fresh checkout as well, then verifies that the package archives match that release. Source manifest versions are development defaults; they do not choose the release.

Frontend plugin compatibility is currently SDK major 0. A 1.x release requires updating and validating the host/module compatibility contract; a version bump alone does not establish compatibility.

What a release publishes​

DestinationArtifact
GitHub ReleasesLinux amd64/arm64 archives: bin/backplane, console, license and launch instructions
GitHub Releases13 frontend .tgz packages and frontend-packages.json inventory
GitHub Releasesbackplane_X.Y.Z_docs.tar.gz: static English documentation site
GitHub ReleasesSHA256SUMS and image-digest.txt
GitHub PagesRelease documentation at https://backplane-labs.github.io/backplane/
GHCRghcr.io/backplane-labs/backplane:X.Y.Z and :latest, both Linux amd64/arm64
GitHub PackagesAll 13 @backplane-labs/backplane-* packages at the coordinated version

The multi-platform image is assembled from the same binary and console trees as the downloadable archives. It runs as non-root and includes trusted CA certificates. Its defaults set BACKPLANE_CONSOLE_ASSETS_DIR=/app/console and BACKPLANE_CONSOLE_PREFIX=/backplane. Deployment supplies credentials and infrastructure endpoints; see configuration.

GitHub Release is created after the documentation build and image/package publication succeed. Pages deploys that release build afterward. Branch and pull-request documentation checks never publish an unreleased site. A failed publication can leave some registry artifacts published; rerun that tag after correcting access. A retry reuses an existing frontend version only if its integrity matches the archive. Different contents require a new version; the workflow never deletes published packages to overwrite them.

Rehearsal​

Run Release → Run workflow on the intended branch with version 0.6.59. It builds archives, packages, documentation and the multi-platform container without pushing images, publishing packages, deploying Pages or creating a release. Download release-files and release-docs from the workflow's artifacts. A rehearsal proves the builds; registry write permissions are exercised by an actual tagged release.

Local equivalents, after installing dependencies in a disposable checkout (the artifact build stamps its package manifests and documentation examples):

bash scripts/build-release.sh 0.6.59
docker buildx build --platform linux/amd64,linux/arm64 \
-f deployments/Dockerfile.release bin/release

The standalone source Dockerfile builds the frontend and server itself:

docker build --secret id=github_token,env=NODE_AUTH_TOKEN \
-f deployments/Dockerfile -t backplane:local .

Use a package-read token for NODE_AUTH_TOKEN. BuildKit mounts it only during installation; it is not a Docker build argument or included in the runtime image. Frontend authentication follows the GitHub Packages setup.

Workflow access​

The standard GITHUB_TOKEN needs package-read access to existing Gopherex dependencies, package-write access for GHCR/frontend publication and contents-write access for release creation. The Pages deployment job uses pages: write and id-token: write; configure the repository Pages source as GitHub Actions and allow version tags in the github-pages environment. Grant this repository Actions access on dependency package settings if needed. Local builds require a token with package-read access. Published package visibility and organization policy are controlled in GitHub's package settings.

No publication goes to npmjs.org. The release workflow explicitly uses https://npm.pkg.github.com and rejects a public package manifest configured with another registry.

Documentation archive​

The archive contains the complete Docusaurus static build, local search index, Mermaid runtime, fonts and favicon. Serve it under /backplane/ with a static web server; no package installation or Node runtime is required. To host at another base path, change website/docusaurus.config.js and rebuild.

Edit guides in website/docs; reference pages are synchronized from source documents by website/scripts/sync-reference.mjs. From website, run yarn install --frozen-lockfile and yarn build to validate links and anchors, or yarn start for development. Release CI stamps the site and its examples from the coordinated tag before building.