GitHub Actionsを使って、Netlifyのビルドをスケジュール実行する

Next.jsのSSGモードやGatsbyを使っている場合、一定頻度でサイトのビルドを行いたいケースが出てきます。

Netlify本体には、2022/06時点でスケジュールビルドの機能はありません。

が、Build HookとGitHub Actionsを使うことで実現できます。

NetlifyのBuild Hookを設定する

まずは、API呼び出しでビルドを実行できるBuild Hookを設定します。

サイトの設定ページの[Build & Deploy]から開きましょう。

Saveすると、https://api.netlify.com/build_hooks/xxxxのようなURLが発行されます。

Build Hook URLをGitHubのシークレットに設定する

GitHub Actionsで利用するsecretに発行したURLを設定しましょう。

YAMLベタ打ちにすると、誰でもビルド実行できる状態になるため、財布に優しくありません。

ここでは、NETLIFY_BUILD_HOOK_URLとして登録します。

GitHub Actionsワークフローを設定する

あとはGitHub Actionsで実行するワークフローを設定しましょう。

.github/workflows/main.yml

name: Trigger Netlify Build
on:
  workflow_dispatch:
  schedule:
    # Run at 0815 daily
    - cron: '15 8 * * *'
jobs:
  build:
    name: Request Netlify Webhook
    runs-on: ubuntu-latest
    steps:
      - name: Curl request
        run: curl -X POST -d {} ${{ secrets.NETLIFY_BUILD_HOOK_URL }}

workflow_dispatchを設定すると、手動でアクションを開始できます。

デバッグ時点では付けておいて、安定稼働し始めたら削除するとよいでしょう。

参考

Comment