🤖

Github で 特定のブランチへのプルリク自動生成ワークフローを作成する

に公開

これなに

  • いつもステージング環境(Staging)のブランチから本番環境(Production)のブランチに自動的にPR作成するようにしています。
  • ただ、いつも新しいリポジトリを作成する際に自分で毎回作成しているのが面倒になってきたので、備忘録として記事にしました。

時間がない人向け

とりあえず御託はいらねえ、って人は以下のコミットから何を作成しているか見てください。
あとは Settings から Github Actions に対して PR 作成権限を付与しないといけないので、それだけ忘れないようにしてください。

https://github.com/su3-hokkaido/auto_pr_creator_with_github_actions/commit/a17b156f21276eabda4f097bfaa929ff6b75e2ab

何ができるか

例えば develop ブランチをステージング環境、master ブランチを本番環境に使用しているなら、 develop ブランチに PR をマージすると、自動的に master ブランチに対して PR を作成してくれます

pull request generated by github actions

workflow history

セットアップ方法

1: Github Actions が PR 作成することを許可する

  • セットアップしたいリポジトリで Settings > Actions > General にアクセスする
  • Workflow permissions にある Read repository contents and packages permissions を有効化する

allow_github_actions_create_prs.png

2: ワークフロー設定ファイルの作成

すでに前述のセクションで記載済みではありますが、改めてリンクをこちらに記載します。

https://github.com/su3-hokkaido/auto_pr_creator_with_github_actions/commit/a17b156f21276eabda4f097bfaa929ff6b75e2ab

作成が必要なファイルは以下の3つです。

  • .git-pr-release
  • .github/git-pr-release.erb
  • .github/workflows/create-d2m-pr.yml

各ファイルの説明

.git-pr-release

主に差分をマージする際のソースブランチとターゲットブランチを指定する設定を記載しています
staging が元のブランチ、 production がマージ先のブランチです

[pr-release "branch"]
    staging = develop
    production = main
[pr-release]
    template = .github/git-pr-release.erb
    labels = git-pr-develop

.github/git-pr-release.erb

主に PR のタイトルを記述するための設定
1行目がタイトル、2行目以降は description にマージする内容を自動作成します

develop-to-main <%= Time.now.strftime("%Y-%m-%d") %>
<% pull_requests.each do |pr| -%>
  <%=  pr.to_checklist_item %>
<% end -%>

.github/workflows/create-d2m-pr.yml

主に GitHub Actions がどのブランチをチェックするか、PR 作成のための権限付与など、各種設定を記載しています
以下は develop ブランチの push をチェックするようにしています

name: Create d2m PR

on:
  push:
    branches:
      - develop

permissions:
  contents: read
  pull-requests: write
  issues: write

jobs:
  d2m-pr:
    runs-on: ubuntu-latest
    timeout-minutes: 3
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Set up Ruby 3.3.1
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.3.1
      - name: Execute gir-pr-develop (develop -> main)
        env:
          GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gem install git-pr-release
          git-pr-release || echo "Done."

.github/CODEOWNERS

このファイルの作成は任意ですが、GitHub Actions が PR をオープンする際に特定のレビュアーのアプループを必須にしたいのであれば、ブランチルール設定で利用することができるので便利です

もし利用されたい方は Settings > Rules > Rulesets で設定してください
なお、本件については本記事で書きたいことから脱線するので詳細は割愛します

image.png

最後に

確か似たような記事がネット上に大量に転がっているのでそちらを参照しても全く問題ありません
繰り返しになりますが、本記事は個人的な備忘録として記載しただけですから、でもそれでも読んでもらえると嬉しいです

参考リポジトリ

https://github.com/su3-hokkaido/auto_pr_creator_with_github_actions

GitHubで編集を提案

Discussion