DependabotからRenovateしたモチベーション
http://gitlab.com/sue445 にあるリポジトリではライブラリのバージョンアップにGitLab版のDependabotである https://dependabot-gitlab.gitlab.io/dependabot/ (Standalone mode)を使っていました。
これといって不満はなかったんですが、gitlab.com/gitlab-org/api/client-go/v3 のようにGo moduleのパス名にメジャーバージョン含まれる場合にDependabotだと追従できないという問題がありました。
GitHubだとnativeで使えるDendanbotがなんやかんやで便利なのでメインではそっちを使いつつパス名にメジャーバージョン含まれるGo moduleのみRenovateを使っているのですが、GitLabだとそういう優位性がないので全面的にRenovateに移行しました。
使ったもの
GitHub Actionsのmarketplaceに対応するものとしてGitLabには CI/CD Catalog というのがあります
今回Renovateを使うために https://gitlab.com/explore/catalog/to-be-continuous/renovate を使いました。
ハマったこと
v1.14.1を使ったので以降のバージョンだと挙動が変わってる可能性があります。
gitlab-ci-renovateのjobがtest stageとbuild stageに依存している
具体的にはこの辺
- https://gitlab.com/to-be-continuous/renovate/-/blob/1.14.1/templates/gitlab-ci-renovate.yml?ref_type=tags#L408
- https://gitlab.com/to-be-continuous/renovate/-/blob/1.14.1/templates/gitlab-ci-renovate.yml?ref_type=tags#L417
gitlab-ci-renovateを導入したリポジトリだと .gitlab-ci.yml に
stages: - test - publish
のように書いていたのですが、build stageが無いせいでgitlab-ci-renovateが依存してるjobが定義できずにシンタックスエラーになりました。
解決方法
ちょっと汚いですが下記のようにstageを追加して回避しました
stages: - build # renovate-validator job requires build stage - test - publish
gitlab-ci-renovateのjobが勝手に追加されるせいでRenovateを使わないワークフローで意図しない挙動になる
GitLabだとGitLab CIのSchedulerを使ってRenovateを動かします。
https://gitlab.com/sue445/tanuki_reminder はSlackなどに投稿する通知ツールなのでRenovate以外にも通知系のSchedulerを登録してます。

Slack通知を行いたいだけなのにgitlab-ci-renovateのjobも実行されて通知が遅くなったり、GitLab CIのQuotaを消費するという問題がありました。
解決方法
Renovate以外のワークフローで $RENOVARE_TOKEN をセットしなければrenovate-depcheck(実際にRenovateを実行するjob)は作られません。*1
そのため下記のようにして $RENOVARE_TOKEN がある時のみcomponentをincludeするようにしました。
include: - component: $CI_SERVER_FQDN/to-be-continuous/renovate/gitlab-ci-renovate@~latest rules: - if: "$RENOVATE_TOKEN"
RenovateのScheduleにのみVariableで $RENOVARE_TOKEN をセットすることで、Renovate以外では $CI_SERVER_FQDN/to-be-continuous/renovate/gitlab-ci-renovate のincludeそのものを抑制しました。
