📅

GitHub Projectsのカンバンビューで更新日ソートする

に公開

GitHub Projectsでカンバン運用をしている際、チケットを最近更新したものから上位に表示したい。しかし、デフォルトの機能では更新日ソートが提供されていない。

これを実現するために、カスタムフィールドとGitHub Actionsによるカスタムワークフローを構築した。

GitHub Projectsのカンバンビュー

GitHub Projectsのビューではカンバンボードがサポートされており、カンバン運用が可能となっている。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view

基本的には手動で優先順位付けして並べ替えするのでソートは不要だが、個人で運用しているのでラベルでおおまかに優先順位が設定されていればよく、細かな順位は更新日で並べ替えておいてくれると最近どこまで対応したのかわかりやすい。

しかし、GitHub Projectsではソート機能はあってもアイテムには作成日時や更新日時のカラムが無いので日付ソートできない。これを解決するには、アイテムにカスタムフィールドで更新日を作成し、カスタムワークフローでアイテム更新時にカスタムフィールドを更新する仕組みが必要になる。

カスタムフィールドの作成

GitHub Projectsにはカスタムフィールドを作成する仕組みがある。これを利用し、updated-at のような日付型のフィールドを作成する。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/understanding-fields/about-date-fields

注意点として、カスタムフィールドは日付型なので日時情報を持たせることはできない。同様のリクエストはあるようだが、あまり要望は多くなさそう。
一旦は日付型でよしとしている。時刻情報まで必要ならテキスト型として対応するなどの修正が必要になりそう。

https://github.com/orgs/community/discussions/40560

カスタムワークフローの実装

GitHub Actionsを使用して、Issueの更新時に自動的にカスタムフィールドを更新するワークフローを作成する。
組込みのワークフローには当然ながらカスタムフィールドを更新するようなものは存在しない。カスタムワークフローとして、GitHub Actionsを構築し、カスタムフィールドを更新するとよい。
公式ドキュメントのActionsを使用したProjectsの自動化のページに、ほぼ同等のことを実現する GitHub Actions が掲載されているのでこれを利用できる。

https://docs.github.com/ja/issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions

認証とスコープ

注意点としてドキュメントにも記載あるが、デフォルトのGITHUB_TOKENではGitHub Projectsを操作することはできない。また、GitHub Projectsがユーザープロジェクトの場合はGitHub Appの権限では操作できない。カスタムワークフローで自動化する上で、PATを避けたければOrganizationレベルのGitHub Projectsを利用する必要がある。ユーザープロジェクトの場合はPATを推奨とあるが、PATしか選択肢が無いのが正しい様子。
今回はユーザープロジェクトなのでPATを利用した。

また、PATはclassicを選択する必要がある。fine-grained PATはprojectスコープを持たないため使用できない。必要な権限はドキュメントに記載の通り、repoprojectを設定する。
未だにclassic PAT以外の選択肢が無いのは正直だいぶ厳しい。

Discussion