🎃

GithubActionsでissueの作成を自動化する

2023/01/21に公開約1,800字

はじめに

Githubで定期的にissueを作成したいケースがあり、やり方を調べたのでそのまとめになります。

Github Actionsでissue作成のワークフローを生成する

こちらのGithub Actionsを使わせて頂きます。

https://github.com/JasonEtco/create-an-issue

ワークフローを作成する

以下がワークフローの設定例になります。

name: Create an issue
on:
  schedule:
    - cron:  '0 8 1 * *'
permissions:
  contents: read
  issues: write
jobs:
  createPullRequest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Create an Issue
        uses: JasonEtco/create-an-issue@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

生成するissueの詳細はデフォルトでは.github/ISSUE_TEMPLATE.mdをワークフローから読みにいきますが、別のテンプレートを設定することも可能です。

  - name: Create an Issue
    uses: JasonEtco/create-an-issue@v2
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    with:
      filename: .github/other-template.md

作成するissueの内容を設定する

以下がテンプレートで設定した場合の例です。

title: 対応してください!{{ date | date('dddd, MMMM Do') }}
assignees: kanoemon
labels: bug, fuga
---
問題が起きているかもしれません。

もっとリッチなissueを作成することも可能なので、詳細は公式ドキュメントを参照して頂くと良いかと思います。

https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository

既に同じissueが存在する場合に、既存issueを更新したい

同じタイトルのissueが存在するときに、update_existingtrueにすることで既存のissueを更新することができます。

  - name: Create an Issue
    uses: JasonEtco/create-an-issue@v2
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    with:
      update_existing: true
      search_existing: all

update_existingfalseにすると既存のissueの更新は行いません。

search_existingではどの状態のissueが対象なのかを設定することができます。
openclosedallを設定することができ、デフォルトはopenになっているのでオープンしているissueが対象となります。

まとめ

ついつい忘れてしまいがちな定期的な作業を、こうして仕組みを作ることで忘れることも防げるし、作業のコストも削減できますね。
自分が意識して覚えておく!ではなくツールに任せたり、仕組みを作るって大事だなと思いました。

Discussion

ログインするとコメントできます