ひとりリポジトリでもPR活用したいなと思い、
いろいろ調べてみたときの備忘録(*´ω`*)
自分のPRは自分で承認できない。。
Pull Requestの作者は、自分自身のPull Requestを承認することはできません。
らしい。。(´・ω・`)
ならば、botにPRをつくってもらおう
ベースブランチ以外にプッシュされたら、
コミット履歴から自分宛てにPRを作成してみる。
name: create PR by github-actions[bot] on: push: branches-ignore: - "main" env: BASE_BRANCH: main REVIEWER: <レビューアのgithub username> jobs: create_pr: # ブランチが作成されただけならスキップ if: ${{ !github.event.created }} runs-on: ubuntu-latest steps: # チェックアウト - uses: actions/checkout@v3 with: # PRのタイトルとかをコミット履歴から取得するので、 # fetch-depthを0に設定して全履歴を取得 fetch-depth: 0 # PRがすでに存在していないかのチェック # gh pr listでbase/headのブランチが同じPR検索して判定 - name: check PR id: check_pr run: | echo "count=$(gh pr list -B ${{ env.BASE_BRANCH }} -H ${{ github.ref_name }} --json 'id' -q '.[] | length')" >> $GITHUB_OUTPUT # PRがまだなかったらghコマンドで生成 - name: Create PR if: ${{ steps.check_pr.outputs.count == '' }} run: gh pr create --fill -B ${{ env.BASE_BRANCH }} -r ${{ env.REVIEWER }} env: # github-actions[bot]のトークンを使って作成するために設定 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
こんな感じでgithub-actions[bot]
が作成したことになる(*´ω`*)
はまったところ
- PRが存在すると作成できずエラーになる
- 事前に
gh pr list
でチェックするようにした
- 事前に
gh pr create --fill
でエラーになるactions/checkout
はデフォルトで最新の履歴しか無い- 全履歴を取得するように
fetch-depth: 0
を設定
- ブランチ作成時(コミットなし)でもPRを作成しようとする
if: ${{ !github.event.created }}
で判定してスキップ
gh pr edit
もあるけど、--fill
フラグはない。。
以上!!便利(*´ω`*)
参考にしたサイト様
- gh pr create should detect and update already existing pull requests · Discussion #5792 · cli/cli
- How can I check if a commit exists in a pull request on GitHub? - Stack Overflow
- actions/checkout: Action for checking out a repo
- gh pr create --fill fails with confusing error: could not compute title or body defaults: fatal: ambiguous argument · Issue #5896 · cli/cli
- GitHub ActionsのWorkflow実行内でRef(Branch)名を取得する方法 | DevelopersIO
- GithubActionsで新しく追加されたファイル名を取得する
- git - How can I get the previous commit before a push or merge in GitHub Action workflow? - Stack Overflow
GitHubActionsで使える値関連
GitHub Actions内で
set-output
が非推奨になったGitHubでの検索関連
secrets.GITHUB_TOKEN
についてjq関連