👋

GitHub Actions を使って issue をテンプレートから自動生成する

2023/09/09に公開

前置き

私は普段 GitHub のプライベートリポジトリに issue を毎日作り、そこに日報や TODO リストのようなものを書いています。

全体的な issue の形はいつも同じなので、 GitHub の ISSUE_TEMPLATE を作成し、このテンプレートを使ってこれまでは毎日手動で issue を作成していました。

この「テンプレートから手動で issue を作成する」際の具体的な作業内容は以下の通りです。

  1. GitHub の issue のページに飛ぶ
  2. 「New Issue」を選択
  3. 対象のテンプレートの「Get started」を選択
  4. タイトルに日付を記入
  5. 「Submit new issue」を選択

まあ 1 分程度で完了する作業ではあるのですが、毎日同じ作業に 1 分程度時間を取られるのは勿体ないので GitHub Actions を使って自動化しました。この記事ではその方法を紹介します。

方法

結論、JasonEtco/create-an-issue を使うことで簡単に実現できました。

README に使い方は記載されているのでそちらをご覧頂くだけで十分な気もしますが、JasonEtco/create-an-issue の今回のユースケースにおける使い方を紹介します。

テンプレートを作成する

.github/ISSUE_TEMPLATE/daily_report.md に以下のような markdown ファイルを作成します。


---
name: Daily Report
about: 日報のテンプレート
title: "{{ date | date('YYYY/MM/DD') }}"

---

## TODO

- [ ] hoge

## 振り返り

GitHub Actions Workflow を作成する

.github/workflows/create_daily_report.yml に以下のような markdown ファイルを作成します。

name: Create Daily Report

on:
  workflow_dispatch:

permissions:
  contents: read
  issues: write 

jobs:
  create_issue:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: JasonEtco/create-an-issue@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          filename: .github/ISSUE_TEMPLATE/daily_report.md

以上で準備は完了です。

実行方法

GitHub の Actions タブから「Create Daily Report」で「Run workflow」を選択すると workflow が実行され、以下のような issue が自動生成されます。

image

補足

定期実行させたい場合はscheduleを設定することで実現できます。

# JST で毎日午前6時に実行する場合
on:
  schedule:
    - cron:  '0 21 * * *'

また、テンプレート内では環境変数やtoolscontextにリストされている変数を参照できるようです。

# 環境変数を参照
{{ env.GITHUB_ACTOR }}

# toolscontext を参照
{{ repo.owner }}
GitHubで編集を提案

Discussion