本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

Astroのビルドエラーの解決方法

Astroを使ってサイトを構築している方で、Cloud BuildなどCI環境でビルドした際に「The collection ‘xxx’ does not exist or is empty」とい […]

この問題は、ローカルでは正常に動作するのに、Cloud Buildのような外部のCI環境でのビルド時にだけ失敗するため、原因は分かりにくいものです。

ここでは、実際に起きた例を元に、問題の原因と解決方法を解説します。


問題

Cloud Build 上で、Astroの Content Collection (例: column, news)が「存在しない」または「空である」としてビルド時にエラーが発生する。

原因

Astro は Content Collection を読み込んだ上で型を自動生成します。 しかし CI 環境では、この型生成コマンド (astro sync)が実行されていないことが原因となり、ビルド時に collection を読み込めずエラーになります。

解決方法

Cloud Build の YAML に astro sync を明示的に追加するだけで解決します!

例: cloudbuild.yaml

steps:
  - name: "node"
    entrypoint: "npm"
    args: ["install"]

  - name: "node"
    entrypoint: "npx"
    args: ["astro", "sync"]  # これを追加

  - name: "node"
    entrypoint: "npm"
    args: ["run", "build"]

  - name: "gcr.io/cloud-builders/gsutil"
    args: ["-m", "rsync", "-d", "-r", "dist", "gs://your-bucket"]

おわりに

CI/CD での Astro ビルドは、このような小さな誤差で挑戦を生みますが、原因を分かってしまえば対処は簡単です。

「Cloud Build でだけ、Content Collection が読み込まれない」という方は、是非上記を参考に解決してみてください!

この記事を共有XFacebook
照屋 塁

ITベンチャー創業の元社会人野球選手。変化の早い世の中の波に乗り、世の中に価値あるサービスを出していきたい!と思い会社を設立

この記事のテーマを、自社の次の一歩へ

自社での進め方を、具体的に。

つくりたい仕組み、既存システム、運用の条件を整理し、実現に向けた次の一歩を考えます。

  • 実現したい仕組み
  • 既存環境との接続
  • 運用の条件
開発・運用の構想を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る