ベースブランチだけ変更したPRを生成するGitHub Actionsの紹介
2023/06/20
git-flowやそれに近いフローを採用している場合、master・mainにマージされたら本番環境、stagingやdevelopにマージされたらStaging環境やテスト環境にデプロイするというCD環境を構築しているケースは多いと思います。
その場合に、masterとstaging双方にPRを出す方式を取っている場合、いちいち2つのPRを出すのは面倒ですし、作業漏れが発生する恐れがあります。
それをGitHub Actionsを使って解決したので紹介させて頂きます。
解決方法
上記の問題を解決するには、
- PR作成時に、当該PRの情報を元に
staging
ブランチをベースブランチにしたPRを作成する master
向け、staging
向けのPRにラベルを付与する
の2つの作業が必要になります。
それぞれを
を使って解決しました。
以下がそのGitHub ActionsのYAMLファイルとなります。
ポイントは以下となります
- トリガーとして
pull_request
のtypes: [ opened ]
を指定することで、PR作成時のみに限定する - 以下のページに書かれた、
pull_request
のpayloadを駆使して作成元のPRのうち、作成するPRに必要な情報を集める https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request GITHUB_ENV
を使って、PRのdescriptionに相当する内容の入った環境変数を定義する
1については、repo-sync/pull-request
が新規にPRを作成することのみに対応しているからです。3については、公式のSetting an environment variableに書かれているので何も難しいことは無いのですが、意外に動的に環境変数をGitHub Actionsで指定することが私はこれまで無かったので、念の為ポイントとして上げさせて頂きました。
このGitHub Actionsの結果が以下となります。
ご覧のように、ラベルがあることで見分けが付きやすくなっています。また、PRのリンクがありつつもdescriptionもコピーされていることで、内容もわかりやすくなっています。反面この設定の欠点としては、PR作成時にタイトルとdescriptionをきちんと書いておかないと中途半端な内容で複製される、というものがあります。ただ、PRのリンクは最低限記載されるので、管理上は大きく困る欠点ではありません。