GitLab CI + Renovateでライブラリのバージョン管理を楽にする

Last-modified: Sat, 03 Aug 2019 21:30:44 JST (20d)
Top > 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ではアプリケーション固有のアクセストークンを発行することで、そのアプリに権限を付与します。

  1. 右上のユーザアイコンをクリックし、その中にある設定をクリックします。
    git00.jpg
  2. すると、ユーザ設定が出てきますので、アクセストークンをクリックします。
    git01.jpg
  3. アクセストークンの設定画面が出ます。名前を適当に入力し、Scopeはapiをチェックします。
    git02.jpg
  4. すると、設定画面の上部にひっそりとアクセストークンが発行されますので、メモして環境変数「API_TOKEN」に設定します。なお、一度閉じると二度と見れなくなります。その際は削除して作り直しましょう
    70%%
    最終的な.gitlab-ci.ymlはここにあります。

Renovate設定

Renovateの設定をします。この設定で自動マージさせるとかできるのですが、ここでは特に設定せず基本設定のみとします。
renovate.jsonというファイル名でリポジトリにコミットします。

{
  "extends": [
    "config:base"
  ]
}

スケジューラへの設定

  1. リポジトリの画面に戻り、CI/CDよりスケジュールをクリックし、新規スケジュールをクリックします。
    git04.jpg
    参考サイトにあるように設定します。renovate変数の値は何でもいいですが、renovateとしました。

動作確認

朝四時まで待つわけにいかないので、テスト実行します。先ほど設定したスケジューラにある再生ボタンをクリックします。

git05.jpg

うまくいくとRenovateが動作し、古いバージョンのライブラリがあれば、ブランチが切られプルリクを投げられ、切られたブランチに対しCIが動作します。

git06.jpg

Counter: 18, today: 1, yesterday: 0

このページの参照回数は、18です。