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