現場で、GitHubのPull Requestが作成されたら自動で作成者をassigneeに設定するGitHub Actionsを作成していた。
実装方法はいろいろあって、
こんなのとか
こんなのとか
の3rdのAction使うほどでもないし、
self hosted runnerにGitHub CLIが入ってなくてimageから作成しなおすのも面倒だったので、github-scriptを使うことにした。
実装はこちらの記事を参考にしようと思ったが、実装が「github.rest.issues.addAssignees」となっている。
「やりたいのはPull Requestへの操作であってIssueではないのだが???」
と思ったので仕様確認。
内部的にはoctokitでAPIを呼んでるだけっぽいのでAPI仕様を見てみる。
(若干見づらいが)Pull Requestへの修正だし「Pulls」のところかなと思って上からずーっと見ていったがそれらしいAPIがない。
「issues」のところには(もちろん)あって、「なぜ???」となっていた。
公式docを確認すると。。
「GitHub の REST API はすべてのプル リクエストをイシューとみなしますが、すべてのイシューがプル リクエストであるわけではありません。」
とのこと。
API(というか内部処理)的にはIssueとPull Requestは同じものとして扱われているみたい。
そういえばIssueとPull Requestで通し番号を共有してるしそういうことなんだろうな。
DiscussionsもIssueやPull Requestと通し番号共有してそうだけどこちらはどうなんだろうと思ったが、どうやら同じ通し番号だけど別機能らしい。
そもそもREST APIではDiscussionsを操作できなくて、GraphQL使う必要があるみたい。
もともとあったTeam Discussionsを操作するのはREST APIでもあるみたいだけど、非推奨になっててGraphQLの方でしか操作できなくなっていくのかな。
もともとTeam Discussionsという機能があって、それがチームだけじゃなくてリポジトリ全体で使えた方がいいよねってことで今のDiscussionsに移行した感じなのかな。
DiscussionはSlackみたいにコメントごとにスレッドがつけられるので便利で結構好きです。