Add semantic release
Partially automate the release process.
This MR introduces semantic-release as a Makefile command and updates documentation on the release process
Tested on another branch: 53133adf
To test locally
You can run the dry run make command which will run some of the release process.
The dry run does not include: updating the VERSION file, CHANGELOG file, or pushing a new tag. New tags get immediately synced to the security repo and both this repo's tag and the security repo tag would need to be deleted. The link above shows what would happen when run on the main branch.
install requirements
make release-tools
run dry run command manually. If you run it using the make command, it checks out main and won't work. This command is the same as Makefile but runs it agaisnt this branch name
npx semantic-release --no-ci --dry-run --branches tchu-implement-semantic-release
output
➜ npx semantic-release --no-ci --dry-run --branches tchu-implement-semantic-release
[11:06:51 AM] [semantic-release] › ℹ Running semantic-release version 24.1.2
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "verifyConditions" from "@semantic-release/changelog"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "verifyConditions" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "verifyConditions" from "@semantic-release/git"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "analyzeCommits" from "@semantic-release/commit-analyzer"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "analyzeCommits" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "verifyRelease" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "generateNotes" from "@semantic-release/release-notes-generator"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "generateNotes" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "prepare" from "@semantic-release/changelog"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "prepare" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "prepare" from "@semantic-release/git"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "publish" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "addChannel" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "success" from "@semantic-release/exec"
[11:06:51 AM] [semantic-release] › ✔ Loaded plugin "fail" from "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ⚠ Run automated release from branch tchu-implement-semantic-release on repository git@gitlab.com:gitlab-org/gitlab-elasticsearch-indexer.git in dry-run mode
[11:06:58 AM] [semantic-release] › ✔ Allowed to push to the Git repository
[11:06:58 AM] [semantic-release] › ℹ Start step "verifyConditions" of plugin "@semantic-release/changelog"
[11:06:58 AM] [semantic-release] › ✔ Completed step "verifyConditions" of plugin "@semantic-release/changelog"
[11:06:58 AM] [semantic-release] › ℹ Start step "verifyConditions" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ✔ Completed step "verifyConditions" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ℹ Start step "verifyConditions" of plugin "@semantic-release/git"
[11:06:58 AM] [semantic-release] › ✔ Completed step "verifyConditions" of plugin "@semantic-release/git"
[11:06:58 AM] [semantic-release] › ℹ Found git tag v5.3.0 associated with version 5.3.0 on branch tchu-implement-semantic-release
[11:06:58 AM] [semantic-release] › ℹ Found 9 commits since last release
[11:06:58 AM] [semantic-release] › ℹ Start step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: chore: add semantic-release config
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is minor
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: Merge branch 'renovate/github.com-go-enry-go-enry-v2-2.x' into 'main'
chore(deps): update module github.com/go-enry/go-enry/v2 to v2.9.1
See merge request https://gitlab.com/gitlab-org/gitlab-elasticsearch-indexer/-/merge_requests/533
Merged-by: Dylan Griffith <dyl.griffith@gmail.com>
Approved-by: Dylan Griffith <dyl.griffith@gmail.com>
Co-authored-by: GitLab Renovate Bot <gitlab-bot@gitlab.com>
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The commit should not trigger a release
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: chore(deps): update module github.com/go-enry/go-enry/v2 to v2.9.1
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is minor
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: Merge branch 'renovate/golang.org-x-net-0.x' into 'main'
chore(deps): update module golang.org/x/net to v0.30.0
See merge request https://gitlab.com/gitlab-org/gitlab-elasticsearch-indexer/-/merge_requests/529
Merged-by: Dylan Griffith <dyl.griffith@gmail.com>
Approved-by: Dylan Griffith <dyl.griffith@gmail.com>
Co-authored-by: GitLab Renovate Bot <gitlab-bot@gitlab.com>
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The commit should not trigger a release
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: chore(deps): update module golang.org/x/net to v0.30.0
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is minor
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: Merge branch 'renovate/google.golang.org-grpc-1.x' into 'main'
chore(deps): update module google.golang.org/grpc to v1.67.1
See merge request https://gitlab.com/gitlab-org/gitlab-elasticsearch-indexer/-/merge_requests/526
Merged-by: Dylan Griffith <dyl.griffith@gmail.com>
Approved-by: Dylan Griffith <dyl.griffith@gmail.com>
Co-authored-by: GitLab Renovate Bot <gitlab-bot@gitlab.com>
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The commit should not trigger a release
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update dependency golang to v1.23.2
See merge request https://gitlab.com/gitlab-org/gitlab-elasticsearch-indexer/-/merge_requests/527
Merged-by: John Mason <9717668-johnmason@users.noreply.gitlab.com>
Approved-by: John Mason <9717668-johnmason@users.noreply.gitlab.com>
Co-authored-by: GitLab Renovate Bot <gitlab-bot@gitlab.com>
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The commit should not trigger a release
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: chore(deps): update dependency golang to v1.23.2
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is minor
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: chore(deps): update module google.golang.org/grpc to v1.67.1
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is minor
[11:06:58 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analysis of 9 commits complete: minor release
[11:06:58 AM] [semantic-release] › ✔ Completed step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[11:06:58 AM] [semantic-release] › ℹ Start step "analyzeCommits" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ✔ Completed step "analyzeCommits" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ℹ The next release version is 5.4.0
[11:06:58 AM] [semantic-release] › ℹ Start step "verifyRelease" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ✔ Completed step "verifyRelease" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ℹ Start step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[11:06:58 AM] [semantic-release] › ✔ Completed step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[11:06:58 AM] [semantic-release] › ℹ Start step "generateNotes" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ✔ Completed step "generateNotes" of plugin "@semantic-release/exec"
[11:06:58 AM] [semantic-release] › ⚠ Skip step "prepare" of plugin "@semantic-release/changelog" in dry-run mode
[11:06:59 AM] [semantic-release] › ⚠ Skip step "prepare" of plugin "@semantic-release/exec" in dry-run mode
[11:06:59 AM] [semantic-release] › ⚠ Skip step "prepare" of plugin "@semantic-release/git" in dry-run mode
[11:06:59 AM] [semantic-release] › ⚠ Skip v5.4.0 tag creation in dry-run mode
[11:06:59 AM] [semantic-release] › ⚠ Skip step "publish" of plugin "@semantic-release/exec" in dry-run mode
[11:06:59 AM] [semantic-release] › ⚠ Skip step "success" of plugin "@semantic-release/exec" in dry-run mode
[11:06:59 AM] [semantic-release] › ✔ Published release 5.4.0 on default channel
[11:06:59 AM] [semantic-release] › ℹ Release note for version 5.4.0:
## 5.4.0 (2024-10-23)
### Chores
* add semantic-release config (aff6d3e)
* deps: update dependency golang to v1.23.2 (107dc5b)
* deps: update module github.com/go-enry/go-enry/v2 to v2.9.1 (d4fd35a)
* deps: update module golang.org/x/net to v0.30.0 (0e5f8a0)
* deps: update module google.golang.org/grpc to v1.67.1 (3eade4f)
Edited by Terri Chu