はじめに
こんにちは。
前回の記事 のRenovate
導入の続きになります。
今回はオプションをいくつか設定してRenovate
の挙動をカスタマイズして試してみます。
Renovateの各種オプション
Renovate
はオプションを設定することでより便利に利用することができます。
設定オプションには大きく、以下があります。
例えば、GitHubアプリとして公開されているRenovate
を最初にリポジトリに紐づけた際にRenovate
が自動で作成するプルリクエストに含まれる以下JSONファイル。
{
"extends": [
"config:base"
]
}
config:base
という、プリセットが使用されています。こう書くことで、下記設定したことと同義です。
{
"extends": [
":dependencyDashboard",
":semanticPrefixFixDepsChoreOthers",
":ignoreModulesAndTests",
":autodetectPinVersions",
":prHourlyLimit2",
":prConcurrentLimit10",
"group:monorepos",
"group:recommended",
"workarounds:all"
]
}
それぞれの設定はここ に詳しく載っています。
個々に設定を追加していくのもありですが、入れたい設定がまとまっているプリセットがあれば
それを使った方が簡潔に記述できます。
セルフホスト環境は特に持っていないので、
以降ではリポジトリ、プリセットの設定をいくつか試してみたいと思います。
(今回試す設定)
- リポジトリ
- assignees ->
Renovate
が作成したプルリクエストを自動でアサインする設定 - reviewers ->
Renovate
が作成したプルリクエストにレビュワーを自動でアサインする設定 - automerge ->
Renovate
が作成したプルリクエストを自動マージする設定 - packageRules -> パッケージ単位に
Renovate
を設定(特定のパッケージは監視対象外とするなど) - schedule -> 日次、週次など、
Renovate
の実行タイミングを制御する設定
- assignees ->
- プリセット
- group:allNonMajor -> マイナー・パッチバージョンアップデートを一つのプルリクエストにまとめる設定
【検証】assignees・reviewers
assigneesを設定することで、Renovate
がプルリクエストを作成した際のアサイン先を設定できます。
{
"extends": [
"config:base"
],
"assignees": ["@mytysoldier"]
}
"devDependencies": {
"request": "2.88.0"
},
上記をリポジトリにプッシュします。
作成されたプルリクエストを見ると、assigneeが設定されていることがわかります。
reviewersも試してみます。Renovate
がプルリクエストを作成した際に自動でレビュワーを設定できます。
{
"extends": [
"config:base"
],
"reviewers": ["@mytysoldier"]
}
"devDependencies": {
"request": "2.88.0"
},
上記をリポジトリにプッシュします。
プルリクエスト作られない。。なんで?
「Dependency Dashboard」をみたら、明示的にチェックボックスをチェックしないといけないみたいなので、チェック入れてみます。(assigneesの検証で試したのと同内容の修正だったからかな)
今度はプルリクエストが作成され、レビュワーも設定されています。
【検証】automerge
automergeを検証してみます。こちらは、Renovate
がプルリクエストを作成した際、指定条件に該当するものはそのまま自動的にマージするような設定です。
注意点として、automergeはプライベートリポジトリだとうまく動作しないようです。
なので、今回はパブリックリポジトリで検証します。
{
"extends": [
"config:base",
":skipStatusChecks"
],
"packageRules": [
{
"matchDepTypes": ["devDependencies"],
"automerge": true
}
]
}
"devDependencies": {
"request": "2.88.0"
},
上記では、devDependenciesの変更をautomergeの対象として設定しています。
これでautomergeが動くかといえば実はそうではなく、何らかのテストが通ったことが確認できたら(テスト成功したら)、Renovate
によるautomergeが動く、ということのようです。
今回はautomergeの検証用に、skipStatusChecksというオプションを使用しています。
このオプションを設定することで、テストの実行結果の確認はスキップされ、automergeが行われます。
上記をリポジトリにプッシュします。
Renovate
による変更が自動マージされ、requestライブラリが最新版(2.88.2)に更新されています。
【検証】packageRules
パッケージ名を指定して、指定パッケージの更新ルールなどを設定することができます。
例)
{
"extends": [
"config:base"
],
"packageRules": [
{
"matchPackagePatterns": ["org.junit.jupiter"]
}
]
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.9'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.9'
testImplementation 'org.junit.jupiter:junit-jupiter:5.6.9'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1'
}
上記のように設定することで、org.junit.jupiter
パッケージの更新は1つのプルリクエストにまとめる、といったことができます。
上記をリポジトリにプッシュします。
上記の感じに、複数のライブラリのバージョンアップデートをまとめて、1つのプルリクエストで作成されます。
【検証】schedule
scheduleを設定することで、Renovate
による監視の実行タイミングを制御できます。
before 3am on Monday
や、before 2am
といった形に指定できます。
なお、Schedule Presets を使用することもできます。
Schedule Presetsを使った場合、schedule:earlyMondays
やschedule:daily
といった形で設定できます。
意味はそれぞれ、さきほどのbefore 3am on Monday
、before 2am
と同義です。
ちなみに、いままではscheduleは特に設定せずに動かしていました。
その場合は、リポジトリに変更がプッシュされる都度、Renovate
のチェックが走ります。
{
"extends": [
"config:base"
],
"schedule": "before 10pm"
}
"devDependencies": {
"request": "2.88.0"
}
上記をリポジトリにプッシュします。
プルリクエストが作成されます。
【検証】group:allNonMajor
group:allNonMajorは、セマンティックバージョンニングでいう、x.y.zのxにあたるメジャー以外のバージョン更新は、一つのプルリクエストにまとめる設定になります。
{
"extends": [
"config:base",
"group:allNonMajor"
]
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:0.6.1'
}
"devDependencies": {
"request": "2.88.0"
}
上記をリポジトリにプッシュします。
プルリクエストが2つ作られ、
all non-majorの方は1つのプルリクエストに変更がまとめられ、
メジャーバージョン更新は別プルリクエストで作成されます。
終わりに
ここまで、簡単にですがRenovate
のいくつかのオプションを試してみました。
ここで試したのはほんの一部で、さらにもっと多くのオプションがあるので、
興味ある方は、公式サイト を見てみてください。
読んでいただきありがとうございました!