diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2c26293..168c73f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,9 @@ on: push: branches: - master + - next +concurrency: + group: release jobs: release: name: Release diff --git a/README.md b/README.md index 34c1e51..c304e5a 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,14 @@ Every push to `master` runs [semantic-release](https://semantic-release.gitbook. It then publishes to npm through trusted publishing with provenance, tags `vX.Y.Z`, and writes the GitHub release. The `version` field in `package.json` is a placeholder. The released version lives in the tags and on npm. +### Release candidates + +Every push to `next` releases a pre-release of the next version, `X.Y.Z-rc.N` (`6.0.0-rc.1` once a breaking change is in). It goes to npm under the `next` dist-tag, never `latest`: `npm install @visual-regression-tracker/agent-codeceptjs@next` installs the candidate, and a plain install keeps getting the last stable release. Its GitHub release is marked as a pre-release. + +Breaking changes go into `next` through pull requests that target it. Merge `master` into `next` when `master` gets new commits. + +To release the final version, merge `next` into `master` with a merge commit, not a squash, so that semantic-release still sees the breaking commits. That push releases it to `latest`. The repository deletes merged branches, so create `next` again from `master` before the next round of candidates. + ## License [Apache-2.0](LICENSE) diff --git a/package.json b/package.json index 936702c..9707283 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,13 @@ "vitest": "^5.1.0" }, "release": { + "branches": [ + "master", + { + "name": "next", + "prerelease": "rc" + } + ], "preset": "conventionalcommits" } }