Github Actionで定期的にファイルをリポジトリにコミットさせる

未分類
スポンサーリンク
スポンサーリンク

目的、使用用途

このWorkflowは定期的にスクレイピングなどでデータを取ってきて、それをリポジトリの中においてあるファイルに反映させるのを自動化させたいといったものです。

具体的には東京都のcovid19対策サイトのデータを管理しているdata.jsonを更新するといった目的で使うみたいなのに使えるはずです。
県によってはcsvファイルでデータを拾えるようにするみたいな話動いてるらしい(噂)なのでこの辺楽になるといいですね

tokyo-metropolitan-gov/covid19
東京都 新型コロナウイルス感染症対策サイト / Tokyo COVID-19 Task Force website - tokyo-metropolitan-gov/covid19

Workflow

Workflowの流れとしては

  • チェックアウト
  • スクリプト等でファイルの作成
  • コミット&プッシュ

直接GithubにPushできるアクションがあるので、それを使います。
今回は雑にファイルを生成するスクリプトを走らせています。

ad-m/github-push-action
GitHub actions to push back to repository eg. updated code - ad-m/github-push-action

ymlをかくとこんな感じ

name: Create File
on:
  schedule:
    - cron:  '0/5 * * * *'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/[email protected]
    - name: create file
      run: |
        bash create_file.sh
    - name: Commit files
      run: |
        git config --local user.email "[email protected]"
        git config --local user.name "GitHub Action"
        git add .
        git commit -m "Add changes" -a
    - name: Push changes
      uses: ad-m/[email protected]
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}

これを追加すると

以下の用に5分おきにジョブを実行できます。

たくさん生成されてますね

Github Actionsの最短インターバルは5分らしい

crontabの作成は、以下のサイトを使うと便利です。

Crontab.guru - The cron schedule expression editor
An easy to use editor for crontab schedules.

参考

ワークフローをトリガーするイベント - GitHub ヘルプ
GitHub で特定のアクティビティが実行された時、スケジュールした時間、または GitHub 外でイベントが発生した時にワークフローを実行できるよう設定できます。

コメント

タイトルとURLをコピーしました