Release System
OpenSyntax uses GitHub Actions and semantic-release to validate, version, publish, tag, and create GitHub Releases automatically.
Pipeline
- Push to `main` triggers the Release workflow.
- Dependencies install with `npm ci` when a lockfile exists.
- Lint, typecheck, tests, and build run.
- `npm pack --dry-run` verifies package contents.
- semantic-release determines the next version.
- npm package is published publicly.
- Git tag `vX.Y.Z` and GitHub Release are created.
- `CHANGELOG.md`, `package.json`, and `package-lock.json` are updated by a release commit.
Versioning rules
| Commit | Release |
|---|---|
BREAKING CHANGE or feat!: | Major |
feat: | Minor |
| Other conventional commit types | Patch |
Required secrets
| Secret | Purpose |
|---|---|
NPMJS_TOKEN | npm automation token with publish access to `opensyntax`. |
GITACCESS_TOKEN | GitHub token used to push release commits, tags, and GitHub Releases. |
Manual release
Open GitHub Actions, select the Release workflow, choose `Run workflow`, and run it on `main`.