🙆

GitHub issue本文の日付を元に自動アサイン、自動クローズを行う

2025/02/11に公開

はじめに

issueによっては予め起票しておき、その期間になれば通知がほしいものがある。

https://seleck.cc/647

GitHub Actionを用いて

  • issueのbody内(概要欄)に「-a YYYY/MM/DD」の記述があれば、その日に自動アサインを行う
  • issueのbody内(概要欄)に「-c YYYY/MM/DD」の記述があれば、その日に自動クローズを行う

を朝8時に行う。

※朝8時にクローズが行われるため、書く際には期間 + 1日を記載する。

code

name: issue

permissions:
  issues: write
  contents: read

on:
  schedule:
    - cron: '0 23 * * *'
  workflow_dispatch:

jobs:
  assignIssue:
    runs-on: ubuntu-latest

    steps:
      - name: リポジトリのチェックアウト
        uses: actions/checkout@v4

      - name: 変数設定
        run: |
          echo "TODAY=$(TZ=Asia/Tokyo date +'%Y/%m/%d')" >> $GITHUB_ENV

      - name: アサイン
        run: |
          issueIdList=$(gh issue list --state open --search "-a ${{ env.TODAY }} in:body" --json number --jq '.[].number')
          if [ -n "$issueIdList" ]; then
            for issueId in $issueIdList; do
              gh issue edit $issueId --add-assignee <自分のid>
              echo "assigned Issue #$issueId"
            done
          else
            echo "no assigned"
          fi
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: クローズ
        run: |
          issueIdList=$(gh issue list --state open --search "-c ${{ env.TODAY }} in:body" --json number --jq '.[].number')
          if [ -n "$issueIdList" ]; then
            for issueId in $issueIdList; do
              gh issue close $issueId 
              echo "close Issue #$issueId"
            done
          else
            echo "no close"
          fi
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  

参考
https://qiita.com/Kazuyaa/items/9113497c1f7fe838fdf6

結果

終わりに

コマンドのような記述を意識して「-a」のような記述にしたが、習慣で「- a」と書いてしまうことがあった。「_a」「assign YYYY/MM/DD」でも良かったかもしれない。

Discussion