Quantcast
Channel: ひでぼ~blog
Viewing all articles
Browse latest Browse all 40

GitHub Actionsで日本の祝日一覧を取得する

$
0
0

国が公開している祝日の一覧のcsvがあります。

www8.cao.go.jp

この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が作成されました。


Viewing all articles
Browse latest Browse all 40

Trending Articles