🙆
GitHub issue本文の日付を元に自動アサイン、自動クローズを行う
はじめに
issueによっては予め起票しておき、その期間になれば通知がほしいものがある。
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 }}
参考
結果
終わりに
コマンドのような記述を意識して「-a」のような記述にしたが、習慣で「- a」と書いてしまうことがあった。「_a」「assign YYYY/MM/DD」でも良かったかもしれない。
Discussion