Cloudflare PagesでHugoデプロイ時のバージョンを変更する方法
はじめに
みんな大好きCloudflareの「Cloudflare Pages」をようやく使用できました。
JAMstackの中の注目株「Hugo」で作成したプロジェクトのデプロイを試してみましたが、躓きがあったのでその解決方法を記しておきます。
余談
2020年12月17日にサービスが発表され、即座にBetaへ申し込んだのですが個人の細々としたブログ用途という事もあってか、待ちに待たされ2021年3月6日に晴れてアクセス権が付与されました。CDNは速いけど、サービス提供の範囲拡大は遅いね!へへっ。
Cloudflare PagesはJAMstack向けのホスティングサービスです。競合サービスとしてVercelやNetlifyが挙げられます。使用経験はVercelとNetlifyのどちらもありますが、私は運営しているJAMstackをどれも Vercelにてホスティングしています。
躓いたこと
Vercelにてホスティングして動作しているプロジェクトをCloudflare Pagesにてデプロイしようとしたところ、エラーが発生してデプロイに失敗しました。
- プラットフォーム:Hugo
- テーマ:hugo-theme-jane
- ビルドコマンド:hugo
- デプロイディレクトリ:public
Error: Error building site: failed to render pages: render of "XXXXX" failed: "/opt/buildhome/repo/themes/jane/layouts/rss.xml:4:19": execute of template failed: template: rss.xml:4:19: executing "rss.xml" at <.Site.Config.Service...>: can't evaluate field RSS in type services.Config
Vercelではビルド成功しているのに・・・、なぜ?
原因
ビルドに使用しているHugoのバージョンが古い。
使用しているテーマのイシューに、Hugoのバージョンが低い場合に同様のエラーが発生することが記載されていました。
Cloudflare Pagesでのログを確認してみると、Hugo Static Site Generator v0.54.0
との出力がありました。上述したイシューではv0.55.4
以上を用いることで解決するとされているので、恐らく確定でしょう。
解決策
Cloudflare PagesがHugoのビルドに使用するバージョンを上げることで解決できます。
その方法は環境変数の指定です。
「設定 > 環境変数」にあるプロダクションとプレビューのそれぞれにHUGO_VERSION = 0.80.0
を指定します。(バージョンは適当なので適宜読み替え)
再デプロイを試みると、使用されるHugoのバージョンが環境変数で指定したものに代わり、無事にデプロイが成功するようになりました。