Renovateおすすめ設定

Renovateの設定をチューニングしたので共有 & 解説をする。
Renovateをより快適に使いこなせ。

https://docs.renovatebot.com/

最終的に設定ファイルはこうなった

それぞれの設定について解説する。

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:base",
    ":timezone(Asia/Tokyo)",
    ":prHourlyLimitNone",
    ":automergePatch"
  ],
  "schedule": ["after 9am on monday", "before 12am on monday"],
  "dependencyDashboard": true,
  "ignorePaths": [
    "src/i_want_to_ignore/*",
    "Dockerfile",
    "docker-compose.yml",
  ],
  "pip_requirements": {
    "fileMatch": [
      "src/i_want_to_check/requirements_dev.txt",
      "src/mee_too/requirements_dev.txt"
    ]
  },
  "packageRules": [
      {
          "groupName": "boto3",
          "matchPackagePatterns": [
              "boto3",
              "botocore"
          ]
      }
  ]
}

$schema

https://docs.renovatebot.com/config-presets/#organization-level-presets

"$schema": "https://docs.renovatebot.com/renovate-schema.json",

VSCodeで補完が効くようになる。地味に便利。

f:id:hesma2:20210410133628p:plain

timezone

https://docs.renovatebot.com/presets-default/#timezoneltarg0gt

https://docs.renovatebot.com/configuration-options/#timezone

"extends": [
  ":timezone(Asia/Tokyo)",
]

デフォルトはUTCになっている。

prHourlyLimitNone

https://docs.renovatebot.com/presets-default/#prhourlylimitnone

"extends": [
  ":prHourlyLimitNone",
]

1時間で作成できるPR数の上限を無くす。
デフォルトだと1時間に2個までしかPRが作成されない。
単発で来るよりも、一気に来て一気に捌きたいのでこの設定に。
(好みに合わせて設定しよう)

また、renovateが作成できるPR数(リポジトリ単位)にも上限があり、デフォルトでは20個まで。

https://docs.renovatebot.com/configuration-options/#prconcurrentlimit

automergePatch

https://docs.renovatebot.com/presets-default/#automergepatch

"extends": [
  ":automergePatch"
]

パッチなら自動でマージする。

最低でも1人のApproverが必要な場合、renovate-approveを入れておくと良い。

CODEOWNERS でApproverを自動設定している場合renovate-approveは動かないので、CODEOWNERSからrenovateがみているファイルの設定を外すとおそらく動く(未検証)

Due to a GitHub limitation, it is not possible to assign any app like this one as a CODEOWNER, so unfortunately this bot won't work that way if you have CODEOWNERS set up.

CODEOWNERSからrenovateがみているファイルの設定を外す

- *   @<username>

# ホワイト形式の記載しかできない
+ *.py  @<username>

schedule

https://docs.renovatebot.com/configuration-options/#schedule

"schedule": ["after 9am on monday", "before 12am on monday"],

月曜の9am ~ 12amにPRが作成される。 (通知が来ることやautomergeされることも考えて、営業時間内にしている)

ここも好みに合わせて、日曜夜などに設定するのもアリ。
デフォルトでUTCになっているので注意。(timezoneを設定せよ)

dependencyDashboard

https://docs.renovatebot.com/configuration-options/#dependencydashboard

"dependencyDashboard": true,

issueにrenovateのダッシュボードが作成される。
溜まっているPRや、表面化していないアップデートなど一覧化できる。

↓ 作成されるダッシュボードの例
https://github.com/shibayu36/typescript-cli-project/issues/17

Edited/Blocked

手動で編集したPRの一覧
チェックボックスにチェックすることで、最初からやり直すことができる

f:id:hesma2:20210410133154p:plain

Open

作成されたPR一覧
チェックボックスにチェックすることで、retry/rebaseすることができる

f:id:hesma2:20210410133210p:plain

Ignored or Blocked

クローズされたPR一覧
チェックボックスにチェックすることで、再作成できる

f:id:hesma2:20210410133226p:plain

Awaiting Schedule

スケジュールによる作成を待っているPR一覧
チェックボックスにチェックすることで、スケジュール時に作成されないようにすることができる

f:id:hesma2:20210410133246p:plain

renovate再実行

一番下のチェックボックスにチェックすることで、renovateのクロールを再度実行できる

f:id:hesma2:20210410133301p:plain

ignorePaths

https://docs.renovatebot.com/configuration-options/#ignorepaths

"ignorePaths": [
  "src/i_want_to_ignore/*",
  "Dockerfile",
  "docker-compose.yml",
]

renovateがチェックしないようにする。
パス指定、ファイル名指定などできる。

pip_requirements

https://docs.renovatebot.com/modules/manager/pip_requirements/

"pip_requirements": {
  "fileMatch": [
    "src/i_want_to_check/requirements_dev.txt",
    "src/mee_too/requirements_dev.txt"
  ]
}

requirements.txt からファイル名を変更した場合、pip_requirements で指定できる。

fileMatch では正規表現が使える。

https://docs.renovatebot.com/modules/manager/#file-matching

packageRules

https://docs.renovatebot.com/configuration-options/#packagerules

"packageRules": [
    {
        "groupName": "boto3",
        "matchPackagePatterns": [
            "boto3",
            "botocore"
        ]
    }
]

いくつかのパッケージをまとめてPRを作成して欲しい場合、この設定をすると良い。

renovateのデバッグ方法

設定したけどなんか動いてないかも?という時に見るべきもの

https://app.renovatebot.com/dashboard

ここからrenovateのログを確認できる。

参考

https://blog.shibayu36.org/entry/2020/11/10/183000