Githubで新しいissueを作るとCloudflare Pagesにデプロイするようにしておく
先日、HugoのサイトをCloudflareに移行した話題について記事にしましたが、実際に使っていると出先で下書きを書いて、それを一時的に Github にプッシュしてから自宅で仕上げるということもよくあります。
そのたびにビルドが起動するとエラーに終わるだけであったり、中途半端な記事がアップされてしまうので実際運用するときには「Githubにイシューが投稿されたらビルドする」などと条件を設定すると便利です。なのでやってみました。
Cloudflare側でdeploy hookを作る
サイトの更新を行っている Cloudflare Pages の Worker を開ききます。
Setting を開いて、Deploy hooks という項目で「+」を押します。
適当な名前をつけて新しい deploy hook を作ると、URL が発行されます。これは他人に知られないようにしておきます。
Github 側で秘密の変数を作り、Github Actions を設定
Github 側ではサイトのリポジトリで秘密の変数を作ります。
たとえば CF_DEPLOY_HOOK という変数に、先程の URL をコピーして保存します。
あとは、Github Actions で on: issues の条件で起動するワークフローを作ります。ワークフローのなかでは curl を使って URL を呼び出すだけです。
name: Trigger Cloudflare Deploy on Issue
on:
issues:
types: [opened]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Call Cloudflare Deploy Hook
run: curl -X POST "${{ secrets.CF_DEPLOY_HOOK }}"
これを Hugo のディレクトリの .github/workflows/deploy.yml などといったファイル名で保存して変更をプッシュしましょう。
これで、Github に変更をプッシュするだけではビルドは実行されず、issue を作成した時点で Cloudflare の deploy hook 経由でビルドが実行されるようになります。
誰かの参考になればいいなと思って記事にしておきました。