国が公開している祝日の一覧のcsvがあります。
このcsvを定期的に確認して、自分のリポジトリで管理しているcsvと差分があればプルリクエストを作成するActionsを作ってみます。
権限の設定
Actionsの権限を設定します。Settings→Actions→GeneralからWorkflow permissions セクションで、 "Read and write permissions"と"Allow GitHub Actions to create and approve pull requests"をチェックしておきます。
workflow
name: CSVファイルの差分チェック on: schedule: # 確認のため10分毎に実行 - cron: "*/10 * * * *" jobs: check-csv-diff: runs-on: ubuntu-latest steps: # リポジトリをチェックアウト - name: リポジトリをチェックアウト uses: actions/checkout@v3 # 必要なツールをセットアップ - name: cURLのインストール run: sudo apt-get install -y curl # CSVファイルをダウンロード - name: CSVファイルをダウンロード run: curl -o new_file_sjis.csv https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv # Shift-JISからUTF-8に変換 - name: Shift-JISからUTF-8に変換 run: iconv -f SHIFT-JIS -t UTF-8 new_file_sjis.csv -o new_file.csv # 差分を確認 - name: 差分を確認 id: diff-check run: | if ! diff -q new_file.csv holidays.csv > /dev/null; then echo "diff=true" >> $GITHUB_ENV else echo "diff=false" >> $GITHUB_ENV fi # 差分がある場合にプルリクエストを作成 - name: プルリクエストを作成 if: env.diff == 'true' run: | git config --global user.name "GitHub Actions" git config --global user.email "actions@github.com" cp new_file.csv holidays.csv git checkout -b new-csv-update git add holidays.csv git commit -m "Update CSV file" git push origin new-csv-update # プルリクエストを作成 gh pr create --title "CSVファイルの更新" --body "CSVファイルに差分があったため更新しました。" --base main --head new-csv-update env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PRの確認
Actionsを実行して無事PRが作成されました。