LoginSignup
1
0

パッケージを自動で更新してくれるRenovateとその導入方法について徹底解説!

Last updated at Posted at 2024-03-22

概要

今回はRenovateの概要、導入方法、renovate.jsonの書き方について解説していきます

前提

  • 今回はpyproject.toml、Docker、GitHub Actions内のパッケージの自動更新の方法をメインに説明していますが別のFWや言語でも使用できます

Renovateとは

プロジェクト内のライブラリを自動で更新してくれるツールです
運用・保守フェーズになると定期的にライブラリを更新しないとセキュリティホールが生まれてしまう場合があります
Renovateを使うと自動でPRをあげてますし、GitHub Actions内でテストが成功したらそのままmerge、失敗したら原因を調査する、などの運用ができるのでとても便利です

導入

MarketPlaceからRenovateを選択します
スクリーンショット 2024-01-22 16.12.40.png

アカウント名を入力して無料でインストールします
スクリーンショット 2024-01-22 16.12.59.png

今回は全てのリポジトリを選択します
スクリーンショット 2024-01-22 16.16.22.png

許可します
スクリーンショット 2024-01-22 16.16.47.png

にアクセスします
以下のように更新する対象となるパッケージの一覧が表示されたら成功です
スクリーンショット 2024-01-22 16.23.14.png

スクリーンショット 2024-01-22 17.52.36.png

スクリーンショット 2024-01-22 16.25.26.png

スクリーンショット 2024-01-22 16.33.37.png

Renovateを設定しよう!

Renovateが自動にPRを作成し、以下のように対象のパッケージを表示します
スクリーンショット 2024-01-22 16.41.09.png

スクリーンショット 2024-01-22 16.41.39.png

以下が初期設定の時のrenovate.jsonです

renovate.json
{
    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
    "extends": [
        "config:recommended"
    ]
}

スクリーンショット 2024-01-23 11.03.39.png

今回は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が自動で生成されたら成功です

スクリーンショット 2024-03-21 8.18.05.png

PRが自動生成されないときは?

ブランチプロテクションルールを適用しているときはrenovateがPRを作成する権限を付与していない可能性があります
以下のようにAllow specified actors to bypass required pull requestsにチェックを入れ、renovateを追加してみてください

スクリーンショット 2024-03-22 9.15.52.png

Rulesetsを適用している場合はAdd bypassにrenovateを追加してください
スクリーンショット 2024-03-22 9.19.32.png

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0