概要
GitLab CI/CD の設定方法 を前回まとめたので、応用編として semantic-release を組み込む。
semantic-release を組み込むと、release branch への Merge Request を作成して merge をしたタイミングで、以下の処理を自動実行できる。
- semantic versioning に基づいて、バージョン番号の自動更新
- commit log、バージョン番号をまとめて、GitLab Release への新規バージョンを登録
semantic-release のインストール
参照:Installation | semantic-release
本体と GitLab 用の config をインストールする。
$ yarn add semantic-release @semantic-release/gitlab-config --dev
semantic-release の設定
参照:Configuration | semantic-release
以下のような設定を行う。
-
@semantic-release/gitlab-config をベースとする。本来は、この
extends
だけを記述すればいいのだが、今回は npm へのパブリッシュは行わないので、以下のplugins
に必要な処理を明示している。 - "release" branch の上で semantic-release を実行する。デフォルトでは main branch 上で実行される。
- @semantic-release/commit-analyzer: commit log を解析して、semantic versioning に基づいてバージョン番号を決める。
- @semantic-release/release-notes-generator: 直前のリリース以降の新規 commit log 群からリリースノートの文面を作成する。
- @semantic-release/gitlab: GitLab Releases に対してパブリッシュを行う。
{
"extends": "@semantic-release/gitlab-config",
"branches": "release",
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/gitlab"
]
}
GitLab CI/CD への組み込み
前回の CI/CD 設定 に追加して、以下の release-job
を Pipeline に追加する。
release-job:
rules:
- if: $CI_COMMIT_BRANCH == "release"
stage: deploy # deploy ステージで実行
image: node:latest
script:
- yarn install
- npx semantic-release
結果として Pipeline は以下のような構成となる。
Personalized Access Token の設定
参照:
semantic-release は、git repo への push を行う権限を必要とするので、GitLab の personalized access token を準備する。
GitLab 画面右上のユーザーアイコン > Edit Profile > Access Tokens で、トークンを作成する。
下図にあるように、scope = api のトークンが必要。
GitLab 画面左のメニュー > Settings > CI/CD > Variables で、環境変数 GITLAB_TOKEN
を登録する。