Netlifyで「Build exceeded maximum allowed runtime」となった時の対処方法
Netlifyで「Build exceeded maximum allowed runtime」となってビルドに失敗した時の対処方法をまとめました。
「Build exceeded maximum allowed runtime」はどういう状態か?
Netlifyでエラーが起こっていないのにビルドに失敗すると、「Build exceeded maximum allowed runtime」というログで終わっていることがあります。これは直訳すると「ビルドが最大許容ランタイムを超えた」という意味ですが、つまりはビルドの作業がNetlifyのbuild robotの処理能力を超えてしまっている時に起こるようです。
中小規模のブログ程度なら遭遇することはあまりませんが、中規模以上のブログなどを静的サイトジェネレータで出力すると、このようなエラーに遭遇しやすくなります。
Netlifyではビルドを担当するbuild robotのスペックをユーザーは指定できないので、このままでは永久にサイトを公開できない状態になります。
対処方法
ビルド処理を軽くする
ビルドのどの段階で「Build exceeded maximum allowed runtime」というエラーが出ているのかにもよりますが、概ねサイトの生成時の負荷が原因ですので、ビルドを軽くするのが優先です。
あまり使っていないプラグインを外したり、複雑な処理を行なっているところを見直したりして、なるべく処理を軽くするように心がけます。
それでも、サイトの構成によっては処理を軽くするのにも限界があるので、その場合は、別の方法で対処します。
ローカルでビルド、デプロイする
Netlifyは、ローカルのコマンドラインからビルド&デプロイを処理できる「Netlify Cli」というツールが提供しています。
通常、Netlifyでは、
- レポジトリにプッシュ
- Netlifyがレポジトリの変更を検知
- Netlifyが自動でビルド&デプロイ
という流れですが、Netlify CLIであれば、ビルド済みのデータをいきなりデプロイすることが可能です。
具体的な設定方法は公式のドキュメントに譲りますが、
netlify deploy --dir=dist/ –prod
このコマンドだけで、本番にデプロイできます。
「dir」はカレントディレクトリから見た公開ディレクトリの場所、「–prod」はいきなり本番環境にデプロイする際の引数です。「–prod」がなければ、一旦ステージング用の仮URLで公開されるので、確認したらNetlifyの管理画面から「publish」ボタンを押せば公開されます。
ローカルでビルド、デプロイするデメリットとしては、毎回コマンドを打つ手間があるくらいですが、この辺りもコマンドを登録しておけば簡略化できるので、アイデア次第ではそこまで手間になりません。
例えば、Node.jsのプロジェクトなら、package.jsonに下記のようなスクリプトを登録しておけば、一発でビルド&デプロイができます。
{
"name": "Node Project",
"private": true,
"scripts": {
"depoy": "node build && netlify deploy --dir=dist/ –prod"
},
Netlifyで「Build exceeded maximum allowed runtime」となった時の対処方法を見てきました。
小規模サイトを運営しているときは滅多に見ないエラーですが、ある程度の規模のサイトになってくると、意外と「エラーがないのにビルドに失敗する」というシーンに遭遇します。
Netlifyでは代替方法が提供されているので、そちらを使ってみてください。
価格は記載がある場合を除き、すべて税込みです。
この記事の関連キーワード
サーバレスアーキテクチャの記事
-
サーバレスアーキテクチャ いまさら聞けないレンタルサーバーとHerokuの違い 2022.5.10 -
サーバレスアーキテクチャ AWS S3より安くて作業コストも削減!Cloudflare Imagesの仕組みや料金まとめ 2021.10.25 -
サーバレスアーキテクチャ Cloudflareのホットリンク保護を回避する方法 2021.10.5 -
サーバレスアーキテクチャ DigitalOceanのサーバーレス(App Platform)のプラン・料金を徹底レビュー 2021.6.17 -
サーバレスアーキテクチャ Cloudflare Workers KVをAPIの無料DBとして使うときのポイント 2021.4.16 -
サーバレスアーキテクチャ Cloudflare Pagesの制限事項まとめ 2021.3.31 -
サーバレスアーキテクチャ コマンドラインで操作できる「Netlify CLI」を使いこなす 2021.3.9 -
サーバレスアーキテクチャ GraphQLサーバーを構築する方法まとめ 2021.2.16