はじめに
『達人プログラマー』を読み、その中で言及されていた「エンジニアリング日誌を書く」習慣を確立しようと考えました。
以下のブログを見て良さそうだったので、自分もGitHubのIssueを活用し作成を自動化することにしました。
そのためのGitHub Actionsのワークフローファイルを備忘録としてまとめます。
GitHub ActionsのワークフローでIssueを自動作成する
以下のワークフローファイルを使えばIssueを自動生成できます。
name: Today I Learned Issue Creator
permissions:
issues: write # Issue作成のみの権限を付与
contents: read # リポジトリの読み取り権限
on:
schedule:
- cron: '0 22 * * *' # 毎日22:00 UTCに実行(日本時間翌朝7:00 JST)
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
- 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 }}
このワークフローファイルでは--label "Today I Learned"
の部分でラベルを付与していますが、このToday I Learned
というラベルは事前にGitHub上で作成が必要です(もちろんなんでもいいし、やらなくても良い)
リポジトリのmainブランチにpushすると翌朝7時に以下のIssueが作成されます。
TIL(= Today I Learned)というフレーズを知ったため、これを採用しています(もちろんなんでもいい)
テンプレートもなんでもいいのですが、単なるTODOリストではなく毎日のフィードバックサイクルを確立したいため、「学んだこと」「ネクストアクション」など、次の行動へ落とし込むための項目を設けています。
マークダウンが狙い通りに反映されずハマった
マークダウン形式のテンプレートが正しく反映されず手こずりました。
試行錯誤したのですが、最終的に--body-file
を使ったこの形に落ち着きました。
自分の知識不足なだけで本来は難しいポイントではなさそうに思います。
また、テンプレートの- [ ] 今日やることを書く
の部分で今日やることを書く
と文言を初期設定しているのは、これを書かないとチェックボックスとしてではなく- [ ]
という文字列として表示されてしまうからです↓
おわりに
せっかく作ったからには習慣化してフィードバックサイクルを確立したいと思います。
今後は、前日のIssueを自動的にクローズするフローも追加する予定です。