2025年3月31日月曜日

ローカルで renovate を実行し python のパッケージバージョンの管理をする

ローカルで renovate を実行し python のパッケージバージョンの管理をする

概要

renovate は nodejs で書かれた自動パッケージ更新ツールです
python の pipenv でも使えるのでローカルで試してみました
なおローカルで試す場合には実際にブランチやPRの作成はされません
本来は CI と組み合わせて使います

環境

  • macOS 15.3.2
  • node 20.18.2
    • renovate 39.222.1

インストール

  • nvm use 20.18.2 --save
  • npm i renovate

renovate.json の作成

{
  "extends": [
    "config:recommended"
  ],
  "enabledManagers": [
    "pipenv"
  ],
  "packageRules": [
    {
      "description": "Schedule all packages update on Sunday nights (9 PM - 12 AM)",
      "matchManagers": [
        "pipenv"
      ],
      "groupName": "pip dependencies",
      "schedule": [
        "* 21-23 * * 0"
      ],
      "automerge": true,
      "automergeType": "branch"
    }
  ],
  "pipenv": {
    "lockFileMaintenance": {
      "enabled": true,
      "schedule": [
        "monthly"
      ]
    },
    "fileMatch": [
      "(^|/)Pipfile$"
    ]
  }
}

package.json への追記

{
  "dependencies": {
    "renovate": "^39.222.1"
  },
  "scripts": {
    "renovate": "renovate --platform=local --dry-run=full",
    "renovate_help": "renovate --help"
  }
}

renovate 実行

  • RENOVATE_CONFIG_FILE=renovate.json npm run renovate

ローカルで実行する場合にはいろいろとオプションが必要です
コマンドの実体は以下です

  • RENOVATE_CONFIG_FILE=renovate.json renovate --platform=local --dry-run=full

これで Pipfile に書かれたパッケージが更新されるはずです

npx で直接実行もできます

  • RENOVATE_CONFIG_FILE=renovate.json npx renovate --platform=local --dry-run=full

local 動作では --dry-run=lookup になっており Pipfile.lock が作成されないので上書きします
LOG_LEVEL=debug を指定すると詳細なログが確認できます
またまだ renovate.json がない場合には --require-config=ignore を設定してください

エラーが出なければ OK です

動作確認

通常 renovate は更新があった場合にブランチからのPRが作成されます
ただ platform=local 実行の場合にはブランチの作成が許可されていないので platform=bitbucket などを指定して実際の挙動を確認しましょう

== の場合

当然ですがバージョンが固定されているので更新されません

isort = "==6.0.0"

で renovate を実行しても 6.0.1 には更新されない

~=の場合

この場合は 6.0.1 に更新されます

isort = "~=6.0.0"

で Pipfile.lock が更新され 6.0.1 がインストールされます

最後に

ローカルで renovate を試してみました
ローカルでは設定ファイルの確認くらいしかできないので実際はリモートリポジトリと組み合わせて使います
次回は bitbucket と組み合わせてみたいと思います

参考サイト

0 件のコメント:

コメントを投稿