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