✨
プルリクエストを自動マージ!PR完了後の面倒を省くGitHub Actionsワークフロー
※この文章はテンション高めなChatGPTが書いています。
概要:
プルリクエスト(PR)が作成されてテストが完了した後、すべてが問題ない場合は自動でマージする、という夢のようなワークフローを紹介します。このGitHub Actionsスクリプトは、prod/release
ブランチからmaster
ブランチへのPRが成功すると、それを自動でマージする設定です。自動化により、PRの手動マージにかかる時間と手間を削減できます。
前の記事:
詳細コード
name: Auto Merge PR on Successful PR Creation
on:
workflow_run:
workflows: ["Auto Create Pull Request from prod/release to master"]
types:
- completed
jobs:
auto-merge:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- name: Check and Auto Merge PR if All Checks Passed
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pr_number=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/${{ github.repository }}/pulls?base=master&head=${{ github.repository_owner }}:prod/release&state=open" \
| jq '.[0].number')
if [ "$pr_number" != "null" ]; then
mergeable_state=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/${{ github.repository }}/pulls/$pr_number" \
| jq -r '.mergeable_state')
if [ "$mergeable_state" == "clean" ]; then
curl -s -X PUT -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/${{ github.repository }}/pulls/$pr_number/merge" \
-d '{"merge_method":"merge"}'
echo "PR #$pr_number has been automatically merged."
else
echo "PR #$pr_number is not mergeable (state: $mergeable_state)."
fi
else
echo "No open pull request found from prod/release to master."
fi
詳細解説:
このワークフローでは、前段で作成した「Auto Create Pull Request from prod/release to master」ワークフローが成功した際に自動でマージを行います。
-
トリガー設定:
- 「Auto Create Pull Request from prod/release to master」ワークフローが成功 (
completed
&success
) したときに自動実行。
- 「Auto Create Pull Request from prod/release to master」ワークフローが成功 (
-
ジョブ「auto-merge」:
-
PRの取得:
-
curl
コマンドでAPIからprod/release
→master
のオープンなPRを確認し、その番号を取得。
-
-
マージ可能性の確認:
- 取得したPRがマージ可能か (
mergeable_state
がclean
か) をチェック。
- 取得したPRがマージ可能か (
-
マージの実行:
- マージ可能であれば自動でマージを実行し、「PR #123 has been automatically merged.」とログ出力。マージ不可能な場合は、その状態をログに出力。
-
PRの取得:
使い方とポイント
-
時間と労力の節約:
自動でPRをチェックしてマージできるため、手作業でマージ確認を行う必要がなくなります。 -
スマートなエラー処理:
マージが不可能な場合にその理由がわかるので、すぐに問題解決に取りかかれます。
コードがもたらすスマートなPR管理!
このワークフローにより、PRの作成からマージまでを完全に自動化。人為的なミスを減らしつつ、より素早くリリースを進められるようになります。余裕のあるワークフロー管理で、他のプロジェクトにも集中できます!
Discussion