ひとりリポジトリでも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関連