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 経由でビルドが実行されるようになります。

誰かの参考になればいいなと思って記事にしておきました。

Author Image

2011年アルファブロガー・アワード受賞。ScanSnapアンバサダー。ブログLifehacking.jp管理人。著書に「ライフハック大全」「知的生活の設計」「リストの魔法」(KADOKAWA)など多数。理学博士。