Repository navigation
Release through dev, stage, prod and main, like every @beplus library, and publish to each CodeArtifact (v0.11.0) - #7
Merged
Conversation
…, and publish to each CodeArtifact (v0.11.0) npm.beplus.cloud (dev's CodeArtifact) had served @beplus/be 0.7.0 as latest since July: the release published only to public npm and GitHub Packages. An estate release that installed be after `beplus npm auth` got 0.7.0's `be auto`, which picks a Node version, and failed (bepluscloud's dev Deploy, 2026-10-08). be now follows library-publish's model, one version per commit, built once, promoted: - dev: pack once, tag vX.Y.Z with a GitHub pre-release, publish the tarball to GitHub Packages (dist-tag dev) and to dev's CodeArtifact; - stage, prod: publish the bytes dev put in GitHub Packages to their own CodeArtifact (GitHub Packages tags them stage / latest); prod makes the GitHub Release a full release; - main: the public channel, fast-forwarded from prod, publishes the same bytes to public npm. Each job assumes github-actions-beplus-be-<env>-npm-publishing in its GitHub environment's BE_AWS_ACCOUNT_ID, and `beplus aws codeartifact auth --env` picks the repository. stage, prod and main refuse a version dev never released, and main refuses to be ahead of prod. PRs go into dev; scripts/install.sh clones main by name, now that dev is the default branch. Co-Authored-By: Igor Lamos <igor@be.plus>
igorlamos
approved these changes
Oct 8, 2026
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.
Why. npm.beplus.cloud, dev's CodeArtifact, had served
@beplus/be0.7.0 aslatestsince July.be's release published only to public npm and GitHub Packages, and that repository has no upstream to npmjs (@beplus/be's origin controls block one).Today that broke the estates' first P3 dev releases.
release-deploy.mjsinstallsbeafter the buildspec has runbeplus npm auth, so it got 0.7.0, whosebe autopicks a Node version. It failed withdid not find supported version of node in 'engines' field. The release failed safely: the service stayed on its previous revision.What.
benow releases the way every@beplus/*library does (setup-beplus'slibrary-publish.yml): one version per commit, built once, promoted.devvX.Y.Zwith a GitHub pre-release, then publishes the tarball to GitHub Packages (dist-tagdev) and to dev's CodeArtifact (npm.beplus.cloud)stagestageprodlatest), and the GitHub Release becomes a full releasemainprod: the same bytes to public npm, with provenancegithub-actions-beplus-be-<env>-npm-publishingin its GitHub environment'sBE_AWS_ACCOUNT_ID, the same derivation library-publish uses.beplus aws codeartifact auth --env "$BE_ENVIRONMENT"picks the repository.scripts/release/check-environment.shrefuses to run withoutBE_ENVIRONMENT, because the CLI would otherwise fall back to dev.origin/prod.dev, now the default branch, and CI's Version check runs there.bin/bumpsays so too.scripts/install.shclonesmainby name.bin/beis unchanged except for itsVERSION. The rules are indocs/releasing.md.Files
.github/workflows/release.yml: jobsplan, thendev/promote/public.scripts/release/verify-version.sh:release <dev|stage|prod|main>.scripts/release/:check-environment.sh,fetch-github-packages.shandpublish-codeartifact.sh..github/workflows/ci.yml,bin/bump,scripts/install.sh,docs/releasing.md,.github/PULL_REQUEST_TEMPLATE.md.CHANGELOG.md.Checks run locally
npm run lint(shellcheck) is clean.npm run test:hostpasses all 54 bats tests.verify-version.sh:pr origin/dev→ "Merging this PR releases @beplus/be@0.11.0 (0.10.0 → 0.11.0)."release dev→need_release=true,need_github_packages=true.release stage|prod|mainbefore the release → refused: "v0.11.0 is not tagged, so dev never released…".release main→ refused, as a release runs only on dev, stage, prod or main.After the merge
npm view @beplus/be version --prefer-onlineshows 0.11.0.git push origin origin/dev:stage, thenorigin/stage:prod, thenorigin/prod:main.