Skip to content

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

Merge request reports

Loading