💬

renovateの実行を隔週に設定する方法

に公開

はじめに

renovateのPRが上がってくるタイミングを隔週の特定の曜日にしたいというニーズがありました。それを実現する小ネタを紹介します。

結論

結論から言うと、renovate.jsonに以下のように設定することで実現できます。

"schedule": ["every 2 weeks on monday"]

scheduleの設定

もう少し詳しく解説します。
renovateの設定ファイルであるrenovate.jsonには、scheduleという項目があります。この項目では、renovateの実行スケジュールを設定することができます。
そしてその設定方法には、CronとLaterという2つの書き方があります。

Cronによる設定

scheduleには、Cronを用いて実行スケジュールを設定することができます。Cronは、以下のような形式で指定します。

  • 毎週末のみ実行: "schedule": ["* * * * 0,6"]
  • 平日の夜間(22時-4時)のみ実行: "schedule": ["* 22-23,0-4 * * 1-5"]
  • 金曜と土曜のみ実行: "schedule": ["* * * * 5,6"]

ただし、Cronでは厳密に「隔週」のような複雑なスケジュールを表現することができません。このような場合に、Laterが役立ちます。

Laterによる設定

Laterは、より人間が読みやすい形式でスケジュールを指定できる方法です。Cronでは表現が難しい「隔週」や「毎月第何曜日」といった複雑なスケジュールも、直感的に記述することができます。

主な指定方法には以下のようなものがあります:

  • 毎週末に実行: "schedule": ["every weekend"]
  • 金曜日と土曜日に実行: "schedule": ["on friday and saturday"]
  • 3ヶ月に1回1日に実行: "schedule": ["every 3 months on the first day of the month"]
  • 隔週月曜に実行: "schedule": ["every 2 weeks on monday"]

補足

ただし、renovateの公式ドキュメントに以下のような記述を見つけました。

Renovate supports the standard Cron syntax, as well as deprecated support for a subset of Later syntax. We recommend you always use Cron syntax, due to its superior testing and robustness. Config support questions are no longer accepted for Later syntax problems - you will be recommended to use Cron instead.

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

とあるように、Laterの設定は非推奨であり、Cronの設定を推奨しています。
なので基本的にはCronの設定を行うことをおすすめします。

Discussion