Install Bazelisk, Node.js 24+, and
pnpm version pinned in package.json (Corepack can select it automatically).
pnpm install --frozen-lockfile
pnpm hooks:install
pnpm build
pnpm test
pnpm test:bcrCorresponding Bazel commands bazelisk build //... and
bazelisk test //.... Run bazelisk test //... inside bcr_test/ to test
module as dependency. Buildkite runs Bazel 9.2.0/8.6.0
module/BCR and host-browser checks on Linux/macOS, plus worker artifact smoke
on macOS/Windows. GitHub Actions retains
Linux namespace checks; KVM VRT
also stays on GitHub Actions. Local overrides belong in .bazelrc.user.
Lefthook validates Conventional Commit messages, for example
feat: add browser test rule or fix: resolve test runfiles.
CI also validates pull request titles and commits. Use conventional title
for squash merges so Release Please can determine next version.
Release Please maintains PR updating version.txt, CHANGELOG.md, and
.release-please-manifest.json. Merging it creates version tag. Module
release workflow builds attested archive, publishes it to GitHub Releases,
and submits BCR update. See workflow
and BCR configuration for publishing destinations.
MODULE.bazel uses development version 0.0.0; Release Please tracks the
release in version.txt. Archive rules_web_e2e-vX.Y.Z.tar.gz has prefix
rules_web_e2e-X.Y.Z. Publishing waits for successful main-only Buildkite status
on the exact tag commit; see release gate.
Maintainers configure these Actions secrets with access to this repository:
GH_RELEASE_TOKEN: PAT with repository access and Contents, Pull requests, and Issues write permissions. PAT lets generated tags trigger downstream workflows.BCR_PUBLISH_TOKEN: token for configured registry fork and publish-to-bcr integration.
Prepare archive locally for existing tag:
.github/workflows/release_prep.sh v0.1.0 > release_notes.txtmodule-release workflow accepts existing tag through manual dispatch
for retries. Running local preparation script does not publish release.