LoginSignup
30
9

More than 1 year has passed since last update.

GitHub で issue を登録する時に自動でプロジェクトを指定する

Last updated at Posted at 2021-09-03

GitHub で issue を登録する時に毎度プロジェクト指定を手動で行うのが面倒だったので自動で設定する方法をまとめました。ググってみると GitHub Actions を使った方法が多かったのですが、 この方法では GitHub Actions を利用しません。

スクリーンショット 2021-09-03 9.29.34.png
↑やりたいこと

テンプレート機能でできない?

GitHub には Issue や Pull Request の作成時に使えるテンプレート機能があります。

assignees や labels は以下のようにテンプレートで指定できるので projects も指定できるようになってほしいところですが、この記事の執筆時点ではそのような仕様はないようです。こちらが対応されたらこの記事の方法は採らなくて良いと思います。

.github/ISSUE_TEMPLATE/issue.md
---
name: 🐞 Bug
about: File a bug/issue
title: '[BUG] <title>'
labels: Bug, Needs Triage
assignees: ''
---

## TODO
- [ ] 

方法

GitHub の issue 登録時の URL には クエリパラメータ を設定できますが、これで projects を指定できます。これと合わせて、テンプレート選択画面をカスタマイズする config.yml を用いればプロジェクト指定が可能になります。config.yml では contact_links の部分に遷移先 URL を指定できるので、 Issue 作成 URL のクエリパラメータに projects を指定します。以下の値はそれぞれの環境に置き換えてください。

  • {ORGANIZATION OR REPO} : GitHub Project が存在する Organization もしくはリポジトリ
  • {REPO} : Issue を作成するリポジトリ
  • {PROJECT_NUMBER} : GitHub Project の自動で採番された数字
.github/ISSUE_TEMPLATE/config.yml
blank_issues_enabled: true
contact_links:
  - name: Issue
    about: Issue template
    url: https://github.com/{REPO}/issues/new?template=issue.md&projects={ORGANIZATION OR REPO}/{PROJECT_NUMBER}&labels=enhancement

例えば tanabee/issue-automation-sample リポジトリで tanabee/issue-automation-sample/projects/1 の GitHub Project を指定する場合は url 部に https://github.com/tanabee/issue-automation-sample/issues/new?template=issue.md&projects=tanabee/issue-automation-sample/1&labels=enhancement と記述します。

Organization 直下のプロジェクトと紐付ける場合は {ORGANIZATION OR REPO} 部分に Organization 名を挿入します。

クエリパラメータで template=issue.md を指定していますが、 issue.md 内に assignees や labels の記述があっても解釈してくれないようです。そのため、 assignees や labels を指定したい場合は config.yml のクエリパラメータで指定する必要があります(指定できるパラメータは Creating an issue from a URL query を参照)。特にテンプレートの本文が不要な場合は template=issue.md の指定を除いても問題ありません。

最終的には以下の2つのファイルになりました。

.github/ISSUE_TEMPLATE/config.yml
blank_issues_enabled: true
contact_links:
  - name: Issue
    about: Issue template
    url: https://github.com/{REPO}/issues/new?template=issue.md&projects={ORGANIZATION OR REPO}/{PROJECT_NUMBER}&labels=enhancement

.github/ISSUE_TEMPLATE/config.yml

.github/ISSUE_TEMPLATE/issue.md
## TODO
- [ ] 

.github/ISSUE_TEMPLATE/issue.md

実際に動作するリポジトリを用意したので、分からない場合にはご参考ください。

以上。

30
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
9