追記(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. | |
} | |
} |
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 もたまに移動してくれないことがありますが、運用でカバー()しています。