GitLabのCI/CD componentsでRenovateを導入する
GitLabにCI/CDコンポーネントという機能が導入された。GitHubで言えばGitHub Actionsのカスタムアクションのようなものである。
今までもCI/CD templatesというyamlの設定ファイルをインクルードする機能を応用する形で似たような機能があったがより洗練された独立した機能として導入された。
Renovateはソースコードが依存しているパッケージにバージョンアップがあったときにアップデートするためのMerge Requestを自動作成してくれるソフトである(同様なソフトでDependabotなどもある)。
今までもCI/CD templateを使ってRenovateは使っていたがあらためて
CI/CD componentsを使って導入したので導入方法を説明する。
CI/CD catalogというページが用意されている。
GitHubで言うところのMarketplaceのようなものである。
まだ立ち上がったばかりなので2024-02-04ではまだ98個しかない。
検索でrenovateを探すと複数みつかるのだが次を使うことにした。
まず事前にトークンを用意しておく。ドキュメントにもあるようにGitLabとGitHubのトークンが必要になる。
GitLabはプロジェクトのトークンを作成する。
説明にあるように api・write_repository・read_read_regsitryで
Developerのトークンを作成する。
なお個人トークンでも動くのだがautodiscoverで動かすと権限のあるレポジトリ全部に
対して動作するのでわかってやるのならいいが範囲が広くなるので注意。
GitHubは
fine-grained personal access tokenで
read-onlyのトークンで良い。
以下の説明にあるようにして .gitlab-ci.yml
に設定を追加する。
include:
- component: gitlab.com/to-be-continuous/renovate/gitlab-ci-renovate@1.2.0
variables:
RENOVATE_PLATFORM: "gitlab"
RENOVATE_EXTRA_FLAGS: "--autodiscover"
現時点ではRenovateに渡すオプションを明示的に指定しないと動かない。
.gitlab/renovate.json
を用意する。中身は以下のようで実質的に空でも良い。
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}
最後にパイプラインスケジュールを作成してRENOVATE_TOKElNとGITHUB_COM_TOKENを設定する。
パイプラインスケジュールを手動で動かしてrenovate-depcheckというジョブが動くのを確認する。
以下のような出力がされるはずである。
...
$ renovate $RENOVATE_EXTRA_FLAGS
WARN: env config dryRun property has been changed to null
INFO: Autodiscovered repositories
"length": 1,
"repositories": ["takatan/warikanjs"]
INFO: Repository started (repository=takatan/warikanjs)
"renovateVersion": "37.170.0"
INFO: Dependency extraction complete (repository=takatan/warikanjs, baseBranch=master)
...
実際導入した感想だが,設定ファイルの書き方は簡易になっていてわかりやすくなった。Renovateのコンポーネントが変数の設定の説明が少なくてちょっと苦労した。
Discussion