概要
今回はRenovateの概要、導入方法、renovate.jsonの書き方について解説していきます
前提
- 今回はpyproject.toml、Docker、GitHub Actions内のパッケージの自動更新の方法をメインに説明していますが別のFWや言語でも使用できます
Renovateとは
プロジェクト内のライブラリを自動で更新してくれるツールです
運用・保守フェーズになると定期的にライブラリを更新しないとセキュリティホールが生まれてしまう場合があります
Renovateを使うと自動でPRをあげてますし、GitHub Actions内でテストが成功したらそのままmerge、失敗したら原因を調査する、などの運用ができるのでとても便利です
導入
にアクセスします
以下のように更新する対象となるパッケージの一覧が表示されたら成功です
Renovateを設定しよう!
Renovateが自動にPRを作成し、以下のように対象のパッケージを表示します
以下が初期設定の時のrenovate.jsonです
renovate.json
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}
今回はDockerfile、docker-compose.yml、GitHub Actions内の
- Python
- Postgres
を自動で更新したくないのでpackageRulesで定義します
各項目の詳細は公式ドキュメントを参照してください
renovate.json
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"baseBranches": [
"develop"
],
"reviewers": [
"@shun198"
],
"timezone": "Asia/Tokyo",
"schedule": [
"after 8am every weekday"
],
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"automerge": false,
"platformAutomerge": false,
"labels": [
"renovate"
],
"docker-compose": {
"enabled": false
},
"dockerfile": {
"enabled": false
},
"lockFileMaintenance": {
"enabled": true
},
"packageRules": [
{
"matchDatasources": [
"docker"
],
"matchPackagePatterns": [
"postgres"
],
"enabled": false
},
{
"matchDepTypes": [
"dev"
],
"matchUpdateTypes": [
"minor",
"patch",
"pin",
"digest"
],
"automerge": true
}
]
}
以下のようにPRが自動で生成されたら成功です
PRが自動生成されないときは?
ブランチプロテクションルールを適用しているときはrenovateがPRを作成する権限を付与していない可能性があります
以下のようにAllow specified actors to bypass required pull requests
にチェックを入れ、renovateを追加してみてください
Rulesetsを適用している場合はAdd bypassにrenovateを追加してください
参考