HugoでCloudflare Pagesにデプロイする際に開発ブランチだけビルドオプションを変える
未来日の記事をビルドしたり,下書きの記事をビルドしたり
Cloudflare Pagesの設定項目を見ても,特定の環境だけビルドコマンドを変えることができない
ので,自分はビルド用のbashスクリプトを書いて実装した
実装方法
Cloudflare Pagesのビルド時の環境変数にCF_PAGESが設定されているので,CF_PAGESが1の場合はCloudflare Pagesと判別できる
CF_PAGES_BRANCHにビルド時のブランチ名が設定されているので,CF_PAGES_BRANCHを見て本番環境かどうかを判別できる
CF_PAGES_URLにデプロイ先のURLが設定されているので,--baseURLオプションに使用する
本番環境の場合でも pages.dev ブランチの値が設定されているので,本番環境では適用しない
作成したスクリプトがこれ
code:build.bash
set -eu
# 本番環境のブランチ名
PRODUCTION_BRANCH='master'
hugo_build_options=()
# Cloudflare Pages で本番環境ブランチではない場合は, draft と future のビルドを行う
if "${CF_PAGES:-0}" == "1" && "${CF_PAGES_BRANCH:-}" != "${PRODUCTION_BRANCH}" ; then
hugo_build_options+=("--buildDrafts")
hugo_build_options+=("--buildFuture")
# Cloudflare Pages で CF_PAGES_URL が設定されている場合は, baseURL オプションを追加
if -n "${CF_PAGES_URL:-}" ; then
hugo_build_options+=("--baseURL" "${CF_PAGES_URL}")
fi
fi
# ビルドスクリプトに引数がある場合は hugo_build_options に追加
if $# -gt 0 ; then
hugo_build_options+=("$@")
fi
# ビルドオプションがあった場合はオプション付きでビルドする
if [ ${#hugo_build_options@} -eq 0 ]; then hugo
else
hugo "${hugo_build_options@}" fi