🐕

GitHubでプルリクエストを一発で作るURL

2022/07/15に公開

CI/CD と プルリクエスト

こちらの記事のようにブランチとリリースが紐付いていることがあります。
その際、自動でPRを作る対応をしても良いんですが、デプロイフロー上難しかったりサクッと対応したい場合などはREADMEにPR作成リンクなど貼っておくだけで簡易的なリリース運用は出来そうです。
それを実現するためにどのような方法があるかを調べてみました。

普通にPRを作るURL

最初にブランチを push するときにプルリクエストを作るリンクが画面に表示されていると思います。
確認すると以下のようなフォーマットになっていますね。

https://github.com/[organization]/[repo_name]/pull/new/[branch_name]

もちろんこのフォーマットでも良いんですが、実はカスタマイズしにくいエンドポイントなので他の方法を探します。

ブランチをカスタマイズしてPRを作るURL

実は公式ドキュメントに クエリパラメータを利用したプルリクエストの作成 についての記述があります。

ここを見ると、以下のようなフォーマットのリンクを利用するようです。
toブランチとfromブランチを指定してプルリクエストを作るにはこのURLである必要があります。

https://github.com/[organization]/[repo_name]/compare/[to_branch]...[from_branch]

また上記URLからもわかると思いますが、実はこれはGithubの New pull request ボタンの遷移先のURLですね。

プルリクエスト作る画面を直接表示する(quick_pull)

上記URLは説明したとおり ブランチ同士を比較表示するためのURL なのですが、 quick_pullを付与することによってプルリクエストを作る画面を直接表示してくれます。
つまり、プルリクエストを作りたいという要件であれば必ず付与したほうが良いでしょう。

# ex: main > productionブランチへのプルリクエスト(※存在しないリポジトリです)
https://github.com/toritori0318/iikanji-app/compare/production...main?quick_pull=1

このオプションを指定すれば URLリンクからPRを作る という基本的な要件は満たせそうです。

その他任意の属性を付与する

ドキュメントを見る限りだと、以下の属性が指定できそうです。

項目名 説明
title タイトル
body 本文
labels ラベル
milestone マイルストーン
assignees 担当者
projects プロジェクト
# ex: main > productionブランチへのプルリクエスト(※存在しないリポジトリです)
https://github.com/toritori0318/iikanji-app/compare/production...main?quick_pull=1&title=hogetitle&body=hogebodydesu&labels=bug&milestone=v1&assignees=toritori0318&project=pj1

プルリクエストテンプレートを指定する(template)

.github/ 以下に任意のテンプレートを置き、それを直接指定して利用することも可能なようです。
template クエリパラメータを利用します。

# ex: main > productionブランチへのプルリクエスト(※存在しないリポジトリです)
https://github.com/toritori0318/iikanji-app/compare/production...main?quick_pull=1&template=pr_release_template.md

最後に

このように、リリースブランチへのPRを作るURLをREADMEに貼っておくだけで簡易的にリリースフローが作れそうですね!

Ref

Discussion