Astroのビルドエラーの解決方法 | GH Media
URLがコピーされました

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

URLがコピーされました
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 が読み込まれない」という方は、是非上記を参考に解決してみてください!

URLがコピーされました

グリームハブ合同会社は、AIメンバーで価値創出に挑戦する会社です。人材不足が加速する中、AI活用で最前線を走ります。

関連記事