renovate を bitbucket で使ってみる
概要
前回ローカルで renovate を動かしてみました
今回は bitbucket と連携して使ってみます
bitbucket からアプリパスワードの作成
https://bitbucket.org/account/settings/app-passwords/ から作成できます
作成するパスワードに必要な権限は以下のとおりです
- account -> Account: Read
- team -> Workspace membership: Read
- issue:write -> Issues: Write
- pullrequest:write -> Pull requests: Write
renovate.json の修正
手動で実行するので schedule の部分はいつでも OK にします
特定の時間帯で renovate が PR を作成可能にする場合は時間を指定しましょう
{
"extends": [
"config:recommended"
],
"enabledManagers": [
"pipenv"
],
"packageRules": [
{
"description": "Schedule all packages update on Sunday nights (9 PM - 12 AM)",
"matchManagers": [
"pipenv"
],
"groupName": "pip dependencies",
"schedule": ["* * * * *"],
"automerge": true,
"automergeType": "branch"
}
],
"pipenv": {
"lockFileMaintenance": {
"enabled": true,
"schedule": ["* * * * *"]
},
"fileMatch": [
"(^|/)Pipfile$"
]
}
}
package.json の修正
bitbucket のユーザ名と先ほど発行したアプリパスワードを使って認証するように修正します
ユーザ名/パスワードは環境変数で渡せるようにしましょう
{
"dependencies": {
"renovate": "^39.222.1"
},
"scripts": {
"renovate": "renovate --platform=bitbucket --username=$BITBUCKET_USERNAME --password=$BITBUCKET_TOKEN team-name/repo-name",
"renovate_help": "renovate --help"
}
}
team-name/repo-name の部分は自身の bitbucket 上で管理しているチーム名とリポジトリ名に変更してください
リポジトリ名を指定せずに --autodiscover=true
にしても OK ですがリポジトリが大量にある場合は精査に時間がかかるのでリポジトリ名を指定したほうが速いです
トラブルシュート: PR が作成されない場合は
Renovate 用のアカウントを作成する必要があるので作成しましょう
そしてそのアカウントからアプリパスワードを取得し設定します
動作確認
とりあえずローカルで動くか試しましょう
認証情報の部分は適宜変更してください
もしこれで master ブランチ上で更新するべきパッケージがあった場合には MR を作成してくれます
最後に
あとは renovate コマンドを定期的に実行する CI を設定するだけです
bitbucket の場合 Mend という専用のアプリがあるのでこれを使うのが一番簡単です
参考サイト