GitLab CI + Renovateでライブラリのバージョン管理を楽にする
Renovateという使用されているライブラリのバージョンをチェックし、アップデートのプルリクを投げてくれるボットサービスがあります。
このサービスですが、OSSでは無料なのですが、プライベートリポジトリでは有料です。
しかし、Renovate自体はOSSであり、Dockerイメージも公開されているので、これを使います。
GitLab CIにあるスケジュール機能(要はCron)を使い、毎朝4時にバージョンチェックを行い、
ついでにバージョンを上げても大丈夫かテストを回します。
.gitlab-ci.ymlの設定
GitLabのスケジュール機能はCIの一部なので、設定はCIと同様.gitlab-ci.ymlに行います。今回はRenovateがバージョンアップのプルリクを投げる際にrenovate/*なブランチを切るので、それを対象に加えます。
only: refs: - master - /^renovate\/.*$/ # 追加
次にRenovateの設定を追加します。
renovate: stage: check_version image: name: renovate/renovate:latest entrypoint: [""] script: - node /usr/src/app/dist/renovate.js --platform gitlab --token ${API_TOKEN} --endpoint https://gitlab.com/api/v4 $CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME only: variables: - $renovate refs: - master
設定については、ここを参考にしました。
ここでは、後述する「API_TOKEN」を環境変数で渡しています。
$CI_PROJECT_NAMESPACEと$CI_PROJECT_NAMEはGitLabに組み込みの環境変数で、それぞれプロジェクトのオーナー名とプロジェクト名が入ります。
アクセストークンの取得
Renovateが動くにはリポジトリにアクセスする必要があります。GitLabではアプリケーション固有のアクセストークンを発行することで、そのアプリに権限を付与します。
- 右上のユーザアイコンをクリックし、その中にある設定をクリックします。
- すると、ユーザ設定が出てきますので、アクセストークンをクリックします。
- アクセストークンの設定画面が出ます。名前を適当に入力し、Scopeはapiをチェックします。
- すると、設定画面の上部にひっそりとアクセストークンが発行されますので、メモして環境変数「API_TOKEN」に設定します。なお、一度閉じると二度と見れなくなります。その際は削除して作り直しましょう 最終的な.gitlab-ci.ymlはここにあります。
Renovate設定
Renovateの設定をします。この設定で自動マージさせるとかできるのですが、ここでは特に設定せず基本設定のみとします。
renovate.jsonというファイル名でリポジトリにコミットします。
{ "extends": [ "config:base" ] }
スケジューラへの設定
- リポジトリの画面に戻り、CI/CDよりスケジュールをクリックし、新規スケジュールをクリックします。 参考サイトにあるように設定します。renovate変数の値は何でもいいですが、renovateとしました。
動作確認
朝四時まで待つわけにいかないので、テスト実行します。先ほど設定したスケジューラにある再生ボタンをクリックします。
うまくいくとRenovateが動作し、古いバージョンのライブラリがあれば、ブランチが切られプルリクを投げられ、切られたブランチに対しCIが動作します。
このページの参照回数は、1874です。