This repository uses three GitHub Actions workflows for quality gates and publishing:
.github/workflows/test.yml- Reusable test workflow used by CI and Publish workflows.
- Runs build, checks, and web-ui unit tests.
.github/workflows/ci.yml- Runs on pushes and pull requests targeting
main. - Calls the reusable
test.ymlworkflow.
- Runs on pushes and pull requests targeting
.github/workflows/publish.yml- Manual only via
workflow_dispatch. - Publishes a tagged release to npm using OIDC trusted publishing.
- Creates a GitHub Release using changelog content.
- Manual only via
For regular development:
- Open a PR to
main. - CI runs
test.ymlautomatically. - Merge once checks pass.
For direct pushes to main:
- CI also runs automatically on push.
Release prep is intentionally manual on the maintainer side:
- Update
CHANGELOG.mdwith a section for the new version. - Bump
package.jsonversion. - Commit and push those changes.
- Create and push a matching git tag in the form
vX.Y.Z(or prerelease likevX.Y.Z-beta.1).
Example:
git tag v0.2.0
git push origin v0.2.0Pushing the tag does not publish automatically.
- Open Actions in GitHub.
- Select
Publishworkflow. - Click
Run workflow. - Enter the tag you already pushed, for example
v0.2.0. - Run the workflow.
Given the input tag, the workflow:
- Fetches tags and verifies the input tag exists.
- Checks out the exact commit for that tag.
- Validates tag format (
vX.Y.Zwith optional prerelease suffix). - Runs the reusable test workflow (
test.yml). - Verifies
tag == v${package.json version}. - Runs
npm run prepublishOnly.- This runs build + checks before publish.
- Publishes with:
npm publish --provenance --access public- Extracts the matching version section from
CHANGELOG.md. - Creates a GitHub Release for the tag with that changelog section as release body.
- Adds a compare link to the previous tag when available.
Publish will fail if:
- The input tag does not exist.
- The tag does not match
package.jsonversion. CHANGELOG.mdis missing.- The changelog section for that version is missing or empty.
- Build/tests/checks fail.