はじめに
以下の記事で、日報用のIssueをGitHub Actionsで自動生成するワークフローファイルについてまとめました。
このワークフローに前日のIssueを自動でクローズする処理も追加したため、こちらも備忘録としてまとめます。
GitHub Actionsで特定のタイトルのIssueを自動でクローズする
↑の記事で紹介したワークフローファイルに前日のIssueをクローズするフ処理を追加します。
ファイル全体は次のようになりました。
.github/workflows/daily-report.yml
name: Today I Learned Issue Creator
permissions:
issues: write
contents: read
on:
schedule:
- cron: '0 22 * * *'
workflow_dispatch:
jobs:
create-daily-issue:
runs-on: ubuntu-latest
steps:
- name: リポジトリのチェックアウト
uses: actions/checkout@v4
- name: 変数の設定 # 前日の日付を追加
run: |
echo "TODAY=$(TZ=Asia/Tokyo date +'%Y-%m-%d')" >> $GITHUB_ENV
echo "YESTERDAY=$(TZ=Asia/Tokyo date --date='yesterday' +'%Y-%m-%d')" >> $GITHUB_ENV
- name: 昨日の Issue をクローズ # フローを追加
run: |
ISSUE_TITLE="TIL - ${{ env.YESTERDAY }}"
ISSUE_NUMBERS=$(gh issue list --state open --search "${ISSUE_TITLE} in:title" --json number --jq '.[].number')
if [ -n "$ISSUE_NUMBERS" ]; then
for ISSUE_NUMBER in $ISSUE_NUMBERS; do
gh issue close $ISSUE_NUMBER --comment "前日の日報をクローズします。"
echo "Issue #$ISSUE_NUMBER をクローズしました。"
done
else
echo "前日のIssueは存在ないか、既にクローズされています。"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 今日の Issue を作成
run: |
cat << 'EOF' | gh issue create --label "Today I Learned" --title "TIL - ${{ env.TODAY }}" --body-file -
## 今日やること
- [ ] 今日やることを書く
## 学んだこと
-
## ネクストアクション
-
EOF
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
このワークフローではTIL - 2024-11-24
のようにTIL - 日付
の形式でタイトルを付与しています。
そのためecho "YESTERDAY=$(TZ=Asia/Tokyo date --date='yesterday' +'%Y-%m-%d')" >> $GITHUB_ENV
で昨日の日付を取得しタイトル検索することで、前日のIssueを抽出できます。
上記のワークフローファイルにより、コメントを投稿した上で自動的にIssueをクローズできるようになりました。
おわりに
まだ始めて数日ですが、日報を書くのは良い習慣だと感じています。
この調子で続けていきたいです。
参考