さんかくすわりで書くブログ

勉強したこととか

GitHubのすべてのPull RequestはIssueです

現場で、GitHubのPull Requestが作成されたら自動で作成者をassigneeに設定するGitHub Actionsを作成していた。

実装方法はいろいろあって、

こんなのとか

github.com

こんなのとか

github.com

の3rdのAction使うほどでもないし、

self hosted runnerにGitHub CLIが入ってなくてimageから作成しなおすのも面倒だったので、github-scriptを使うことにした。

github.com

 

実装はこちらの記事を参考にしようと思ったが、実装が「github.rest.issues.addAssignees」となっている。

knmts.com

 

「やりたいのはPull Requestへの操作であってIssueではないのだが???」

と思ったので仕様確認。

 

内部的にはoctokitでAPIを呼んでるだけっぽいのでAPI仕様を見てみる。

octokit.github.io

(若干見づらいが)Pull Requestへの修正だし「Pulls」のところかなと思って上からずーっと見ていったがそれらしいAPIがない。

 

「issues」のところには(もちろん)あって、「なぜ???」となっていた。

 

公式docを確認すると。。

docs.github.com

GitHubREST API はすべてのプル リクエストをイシューとみなしますが、すべてのイシューがプル リクエストであるわけではありません。」

とのこと。

 

API(というか内部処理)的にはIssueとPull Requestは同じものとして扱われているみたい。

そういえばIssueとPull Requestで通し番号を共有してるしそういうことなんだろうな。

 

DiscussionsもIssueやPull Requestと通し番号共有してそうだけどこちらはどうなんだろうと思ったが、どうやら同じ通し番号だけど別機能らしい。

そもそもREST APIではDiscussionsを操作できなくて、GraphQL使う必要があるみたい。

docs.github.com

もともとあったTeam Discussionsを操作するのはREST APIでもあるみたいだけど、非推奨になっててGraphQLの方でしか操作できなくなっていくのかな。

docs.github.com

 

もともとTeam Discussionsという機能があって、それがチームだけじゃなくてリポジトリ全体で使えた方がいいよねってことで今のDiscussionsに移行した感じなのかな。

docs.github.com

 

DiscussionはSlackみたいにコメントごとにスレッドがつけられるので便利で結構好きです。