Open4
GitHub Actions周りのTipsを溜めていくスクラップ
解決したいこと
ActionsでPull requestを作って、Approveして、マージするような時、全て同じトークンを使うと同一ユーザでApproveできないので解決策が必要。
PRを作るところと、Approveしてマージするところでstepを分けて、違うトークンを使えば良い。
例は何かしらのPATを使うようにしているけど、実際はGitHub Appsで作ったトークンを使っている。
あと、リポジトリでオートマージを許可する設定をしている。
解決例
jobs:
example:
runs-on: ubuntu-latest
steps:
- 中略
- name: Create PR
env:
GITHUB_TOKEN: ${{ secrets.HOGE_PAT }}
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
run: |
URL=$(gh pr create --base "${DEFAULT_BRANCH}" --title ":ghost: auto merge PR")
echo "PR_URL=${URL}" >> $GITHUB_ENV
- name: Merge PR
env:
GITHUB_TOKEN: ${{ github.token }}
PR_URL: ${{ env.PR_URL }}
run: |
gh pr review "${PR_URL}" --approve
gh pr merge --merge --auto "${PR_URL}"
解決したいこと
ActionsでPR作る時、ソースブランチの名称はなんでも良いからランダムに生成してほしい。
cat /dev/urandom
を使う案もあるけど、Broken pipeになって面倒なので uuidgen
を使った。
解決例
- run: |
SOURCE_BRANCH="$(date +'%Y%m%d')-$(uuidgen | head -c 30 | sha256sum | head -c 10)"
コンテナで動かしている時、 github.workspace
と GITHUB_WORKSPACE
は値が違う。
直るまでは GITHUB_WORKSPACE
で統一した方が取り回ししやすい。