🍷
GitHub Actions の中から PR の自動マージを行う
Kubernetes を勉強していて GitOps に辿り着きました。
その際に helm チャートの Docker イメージタグ部分を更新した PR を自動で main
ブランチにマージできないものかと思ったのがきっかけです。
良い Action が無いか調べたりもしましたが、結果すごく簡単だったのでメモします👨💻
結論
そのものズバリなコマンドがあるので、 GitHub CLI を利用する。
$ gh pr merge [<number> | <url> | <branch>] [flags]
なのでマージ対象PR の <number> | <url> | <branch> のどれかがあればOKです。
GitHub Actions から使うならこんな感じで上手くいきました🧐
createPullRequestForStg:
env:
ENV: stg
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: |
[${{ env.ENV }}] update container image
committer: GitHub <noreply@github.com>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
signoff: false
branch: create-pull-request/release/${{ env.ENV }}
base: main
delete-branch: true
title: |
[${{ env.ENV }}] Update Container Image
body: |
[${{ env.ENV }}] Update Container Image
- Updated helm chart container image
- Auto-generated by [create-pull-request][1]
[1]: https://github.com/peter-evans/create-pull-request
labels: |
update container image
${{ env.ENV }} release
assignees: tatsuro-m
draft: false
- name: merge PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh pr merge ${{ steps.cpr.outputs.pull-request-url }} --merge
PR の作成も自動化したかったので、
を利用させて頂きました🙌この Action は output に作成された PR の url を出力してくれるのでそれを利用しています。
github cli は GitHub Actions に標準でインストールされているので何もしなくても使えます。
認証にはお馴染み ${{ secrets.GITHUB_TOKEN }}
を使います!
実際にこの方法で自動マージを行った PR です。
helm の valuesファイル(yaml) の GitHub Actions からの書き換え方法についてはまた記事にするかもしれません🏄♂️
どなたかの参考になれば幸いです。
Discussion