🛠️
リポジトリの最新コミットがRenovateだらけにならないようにする
使ってみたいライブラリのGitHubを見に行ってコミット一覧がこれだったらちょっと残念じゃないですか?
最新コミットが先週とかでおっ結構メンテされてるじゃん、と思ったらbotだった時少しがっかりする...気がする。
他の人にもこの気持ちを味わってほしくないので、回避策を考えました。
回避策
renovate-pr(名前はなんでもいい)というRenovate専用のブランチを作ります。
流れは以下の通り。
- renovate-prブランチにRenovateがライブラリ更新をマージしていく
- 適当なタイミングでrenovate-prのプルリクエストをmainにSquash and mergeする
- マージコミットによってGitHub Actionが動いてrenovate-prが再作成される
- 1.に戻る
こんな感じになります。
手順
1. renovate.jsonのbaseBranchesを変更
renovate.json の設定を変更し、マージ先のブランチをデフォルトブランチ以外に設定する。
{
"baseBranches": ["renovate-pr"]
}
これでライブラリ更新のPRがrenovate-prブランチへマージされるようになります。
2. コミット時にブランチとPRを作成するGitHub Actionを追加
GitHubのAutomatically delete head branchesが有効という前提で、mainブランチへコミットされる度にrenovate-prブランチが無ければプルリクエストごと作るというGitHub Actionを作っておきます。
name: commit
on:
push:
branches:
- main
jobs:
create-renovate-pr:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Check PR
id: check-pr
run: echo "count=$(gh pr list -S 'Renovate Updates in:title' | wc -l)" >> "$GITHUB_OUTPUT"
- name: Create PR
if: steps.check-pr.outputs.count == 0
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git switch -c renovate-pr
git commit --allow-empty -m "Renovate Updates"
git push origin renovate-pr
gh pr create -B main -H renovate-pr -t "Renovate Updates" -b ''
プルリクエストの存在チェックは以下の記事を参考にしました。
このActionによってコミットのタイミングでrenovate-prというブランチと、以下のようなプルリクエストが作成されます。
注意点
renovate.jsonの設定は常にmainのものが使われることだけ気をつけてください。
Renovate always uses the config from the repository's default branch
https://docs.renovatebot.com/configuration-options/
renovate-prに変更を加えても反映されません。
Discussion