[GitHub Actions] Github Pagesをcron的に定期的に自動デプロイする方法
2 min read
背景
API や submodule などのリソースを含んだリポジトリがある。ソース自体には変更はないが、それらが定期的に更新される仕組みとなっているため、ホスティング先の GitHub Pages を定期的に更新したい。
環境
- GitHub のリポジトリ
- GitHub Pages(ブランチ名は gh-pages)
- Nuxt.js
今回の環境では Nuxt.js の静的ジェネレート(nuxt generate
)を利用していた
方法
自動化には GitHub Actions を利用する。
具体的なワークフローは以下の通り。
name: github pages deploy
on:
push:
branches:
- master
schedule:
- cron: "0 0 * * *"
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install
run: yarn install --frozen-lockfile
# === 中略 === "
- name: Generate
run: yarn run generate
- name: deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
トリガー
トリガーイベントでschedule
を設定する。
on:
schedule:
# * はYAMLに置ける特殊文字なので、この文字列は引用符で囲まなければならない
- cron: "*/15 * * * *"
クーロン構文でcron
にスケジュール設定ができる。
ジョブ
jobs
については、以下の通り。
- リポジトリのチェックアウト
- 依存モジュールのインストール
- ビルド
- デプロイ
GitHub Pages には peaceiris/actions-gh-pages@v3 を利用してデプロイしている。