🛠️

リポジトリの最新コミットがRenovateだらけにならないようにする

2023/09/09に公開

使ってみたいライブラリのGitHubを見に行ってコミット一覧がこれだったらちょっと残念じゃないですか?

大量のRenovateのコミット

最新コミットが先週とかでおっ結構メンテされてるじゃん、と思ったらbotだった時少しがっかりする...気がする。

他の人にもこの気持ちを味わってほしくないので、回避策を考えました。

回避策

renovate-pr(名前はなんでもいい)というRenovate専用のブランチを作ります。

流れは以下の通り。

  1. renovate-prブランチにRenovateがライブラリ更新をマージしていく
  2. 適当なタイミングでrenovate-prのプルリクエストをmainにSquash and mergeする
  3. マージコミットによってGitHub Actionが動いてrenovate-prが再作成される
  4. 1.に戻る

こんな感じになります。

マージされてRenovate Updatesという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 ''

プルリクエストの存在チェックは以下の記事を参考にしました。

https://zenn.dev/kshida/articles/auto-generate-release-pr-with-github-actions

このActionによってコミットのタイミングでrenovate-prというブランチと、以下のようなプルリクエストが作成されます。

https://github.com/mkizka/unsocial/pull/369

注意点

renovate.jsonの設定は常にmainのものが使われることだけ気をつけてください。

Renovate always uses the config from the repository's default branch
https://docs.renovatebot.com/configuration-options/

renovate-prに変更を加えても反映されません。

GitHubで編集を提案

Discussion