recurring-backlog-item-creator

概要

設定ファイルに基づいて、GitHub Projectsのバックログアイテム(issue)を定期的に自動作成するGitHub Actions。 作成周期(毎月、四半期、年1回など)の異なる定期issueは、種類ごとにGitHub Action workflowが必要なため嵩張る。 これを設定ファイル一つで管理できるようにした。

設定できる項目:

  • issueごとの作成月
  • タイトルの接頭辞・接尾辞({{YearMonth}} などのテンプレート変数を使える)
  • Projectのカスタムフィールド

目的

振る舞いをコードではなく、データとしての設定ファイルで表現する感覚をつかむこと。

設定をデータとして扱うと、「今月どのissueを作るか」は、設定と月からissueの一覧を求める変換として書ける。 そこで、CLIとActionとに分けて設計した:

  • CLI: 設定ファイルと月を受け取り、作るべきissueをJSONで返す
    • Goを使うことで楽に書けた
    • 副作用のない関数を中心に実装した。フィールドの検証やIDの解決でGitHubを読む部分はインターフェースで抽象化し、テスト時にモックに差し替え可能にした
  • Action: GitHubへの外部副作用(issueの作成、Projectへの追加、フィールドの設定)を担当

現在の状態

GitHub Marketplaceで公開中: rindrics/recurring-backlog-item-creator

利用技術

GitHub Actions, Go