概要
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 と組み合わせてみたいと思います