追記(2019-09-23):
⚠️ この記事の GitHub Actions は HCL 記法を使う古い方法です。現在は YAML 記法に変わりました。参考にしないで下さい。


Issue や Pullrequest を作ったら、GitHub Project に自動追加なんてことができそうですね。

[2019-01-28-1] に書いたので作ってみました。

この GitHub Action を使ったサンプルリポジトリが https://github.com/masutaka/sandbox-github-actions です。

Issue や PR を作ると GitHub Actions Trial part2 Project の To do または In progress カラムに自動的に追加されます。Fork 先からの PR でも同様です。Actions タブ で確認できますが、私以外は見られないのかな?

設定方法は簡単で、.github/main.workflow に以下を追加するだけです(GitHub Actions はまだ beta 版なので、このページ から Sign up しておく必要はあります)。

# For issues
workflow "issues" {
on = "issues"
resolves = ["Add an issue to project"]
}
action "Add an issue to project" {
uses = "docker://masutaka/github-actions-all-in-one-project"
secrets = ["GITHUB_TOKEN"]
args = ["issue"]
env = {
PROJECT_URL = "https://github.com/masutaka/sandbox-github-actions/projects/2" # required
INITIAL_COLUMN_NAME = "To do" # required. It is added to this column.
}
}
# For pull requests
workflow "pull_requests" {
on = "pull_request"
resolves = ["Add a pull_request to project"]
}
action "Add a pull_request to project" {
uses = "docker://masutaka/github-actions-all-in-one-project"
secrets = ["GITHUB_TOKEN"]
args = ["pull_request"]
env = {
PROJECT_URL = "https://github.com/masutaka/sandbox-github-actions/projects/2" # required
INITIAL_COLUMN_NAME = "In progress" # required. It is added to this column.
}
}
view raw main.workflow hosted with ❤ by GitHub

PROJECT_URL と INITIAL_COLUMN_NAME は必須です。GITHUB_TOKEN はリポジトリに紐付いた token が自動的に使われます。詳しくはドキュメント をどうぞ。

Issue や PR がクローズされると Done カラムに、リオープンされると In progress カラムに移動します。これは GitHub Projects の Automation を使っています。

やりたかったこと

会社で使っている waffle.io は高機能なためか、だいぶ重いです。今回の GitHub Action があれば、GitHub Projects に移行できるかなあなんて思っていました。

とは言え、移行は難しいかもしれません。Issue と PR の関連付けや Epic などは GitHub Projects にはないため。

追記(2019-08-12):
結局 waffle.io から GitHub Projects に移行しました。
ただし、この GitHub Action は使わずに project-bot という GitHub App を使っています。
GitHub Action は CI と同じ扱いで、本来の CI と混ざったり、たまに失敗するのが Noisy だったからです。
project-bot もたまに移動してくれないことがありますが、運用でカバー()しています。