搜索

首页  >  问答  >  正文

Cloudbuild部署到App Engine遇到问题

我已经构建了一个使用Node Vue JS的项目,该项目的结构中有不同的目录用于存放前端和后端代码。 /api 是后端代码,有自己的package.json,而 ui 是前端代码,也有自己的package.json。该项目的结构如下:

/app
  /api
    package.json
  /ui
    package.json
  /config
    cloudbuild.yaml

我正在尝试使用Cloudbuild将项目部署到App Engine。 cloudbuild.yaml 文件的结构如下:

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

步骤0-2成功完成,但是在构建Vue应用程序以进行生产时,构建失败,具体是yarn run build命令。此命令在/ui目录的package.json中被列为vue-cli-service build

错误信息为/bin/sh: 1: vue-cli-service: not found

看起来Cloudbuild找不到vue-cli,好像它没有安装或者不知道要构建什么。

我的问题是如何使用Cloudbuild将具有不同目录的项目部署到App Engine?

P粉018548441P粉018548441270 天前523

全部回复(1)我来回复

  • P粉736935587

    P粉7369355872024-04-01 00:43:36

    Cloud Build的核心原则之一是在每个步骤中从下一个执行上下文开始。只有/workspace目录在每个步骤之间保留。

    在第三个步骤中,您在全局安装vue cli,因此不在当前目录(workspace的子目录)中,而是在容器运行时目录(/etc或其他地方;在任何情况下,都不在workspace下)。

    如果您删除global参数,您将在应用程序目录(/workspace下)中本地安装库,因此安装将在后续步骤中持续存在。

    回复
    0
  • 取消回复