🌚

GitHub Actionsでgo mod tidyを実行しPRを作成する

2021/09/02に公開

本題

go mod tidyを実行して、差分があればPRを出すようなGitHub Actionsを実装しようして雑に検索したのですがピンポイントな記事が見つからなかったのでここに記しておきます。

name: Go mod tidy

# cron, pull_request などお好みで
on: push

jobs:
  sync-dependencies:
    name: Run go mod tidy
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.16.0

      - name: Run go mod tidy
        run: go mod tidy

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v3
        with:
          commit-message: "fix: run go mod tidy"
          branch: go-mod-tidy
          delete-branch: true
          title: "Update go.mod"

PRを作成するのに peter-evans/create-pull-requestを使用しました。オプションなどはこちらを参考にしてください。

余談

依存モジュールの更新を察知してPRを出してくれるRenovateやDependabotでもgo mod tidyを実行してくれます。

Renovate

postUpdateOptionsgomodTidyをenableにすることでgo mod tidyを実行してくれるのですが、go.sumが期待通りにならなかったりするらしいので注意が必要です。気になった方はissueを探してみてください。
https://docs.renovatebot.com/golang/

Dependabot

以前はモジュールのアップデート時にgo mod tidyを実行してくれなかったそうなのですが、今は実行してくれるみたいです。

.github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "gomod"
    directory: "/"
    schedule:
      interval: "weekly"

Discussion