Cloudbuild 无法从我的 Vue 应用程序中找到我的 package.json

Cloudbuild can't find my package.json from my Vue app

我正在尝试通过 GCP Cloud Build 将 Vue JS 应用程序部署到 GCP App Engine。我已按照说明在与 app.yaml 文件不同的目录中创建了一个 cloudbuild.yaml 文件。

的构建错误

error Couldn't find a package.json file in "/workspace"

看起来 cloudbuild.yaml 文件的前两步执行成功,但在尝试 运行 构建时失败。

目录是这样的:

root/
├─ config/
│  ├─ cloudbuild.yaml
app.yaml
package.json

这是我的 app.yaml 文件

runtime: nodejs10
service: icx-ui

handlers:
# Serve all static files with urls ending with a file extension
- url: /(.*\..+)$ 
  static_files: dist/
  upload: dist/(.*\..+)$
# catch all handler to index.html
- url: /.*
  static_files: dist/index.html
  upload: dist/index.html

我的cloudbuild.yaml如下:

steps:
  - name: node
    entrypoint: yarn
    args: ["install"]
  - name: node
    entrypoint: yarn
    args: ['global', 'add', '@vue/cli']
  - name: node
    entrypoint: yarn
    args: ["run", "build"]
  - name: "gcr.io/cloud-builders/gcloud"
    args: ["app", "deploy", "./app.yaml"]
    timeout: "1600s"

如您所见,我将文件路径添加到我的 app.yaml 文件

您的 gcloud builds submit 命令定义的源目录是 dist/,这是您的应用程序的构建生产版本。默认情况下,此目录不包含 package.json 和 app.yaml。

Cloud Build 上的

运行 yarn run build 需要 src/package.json 等文件来构建 您将通过 App Engine 提供的文件 (dist)。解决办法是指定根项目为build的源目录:

gcloud builds submit --config ./config/cloudbuild.yaml .

如果在某些情况下这让您担心部署中包含一些不必要的文件,例如 node_modules,您可以通过在 .gcloudignore 上指定它们来忽略这些文件。