何
余計なことをしたせいでしょーもないところでハマったので備忘録
create-pull-request@v7でGitHubのPR作成を自動化しようとしたときのちょっとしたハマりどころです。
起きたこと
こんなGitHub Actionを作ってました。差分があったら自動でPRを作りたかったのです。
on:
pull_request:
jobs:
sample:
runs-on: ubuntu-latest
steps:
- name: change
run: |
git branch -b "sample"
<ファイルチェンジの処理何か>
git add .
git commit -m "Update!"
git push origin sample
- name: create pr
uses: peter-evans/create-pull-request@v7
with:
branch: "sample"
title: "auto update"
body: "auto update dayo!"
base: main
ただ、これを実行すると、差分が全くないPRが作成されてしまっていました。
commitもpushもうまく行っていたのになぜ?と思って調べてみると、create-pull-requestのステップで、その前のステップで作った同名のブランチを上書きしていることが判明…
つまり、create-pull-request以前のステップがなかったことになっていたのです。
これが起きないようにするために
create-pull-requestさんはPR作成だけをやってくれるツールではなく、
- 新しいブランチ作成
- 差分の自動検出
- コミット
- リモートへのプッシュ
- PR作成
までを一括してやってくれるツールです。
ゆえに、手元で余計なことをしてはならず、ユーザーがGitHub Actionで指定すべきことはファイルを更新するべきことだけなのです。
これで問題解決。
on:
pull_request:
jobs:
sample:
runs-on: ubuntu-latest
steps:
- name: change
run: |
<ファイルチェンジの処理何か>
- name: create pr
uses: peter-evans/create-pull-request@v7
with:
branch: "sample"
title: "auto update"
body: "auto update dayo!"
commit-message: "Update!"
base: main
他のステップなどで適用した、今手元にある変更を、with.branch
で指定したブランチに自動的にコミット&プッシュしてくれます。with.commit-message
を指定すれば、git commit -m
のメッセージに代替させることもできます。かんたんだね。