首頁  >  問答  >  主體

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粉018548441188 天前427

全部回覆(1)我來回復

  • P粉736935587

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

    Cloud Build的核心原則之一是在每個步驟中從下一個執行上下文開始。只有/workspace目錄在每個步驟之間保留。

    在第三個步驟中,您在全域安裝vue cli,因此不在目前目錄(workspace的子目錄)中,而是在容器執行時目錄(/etc或其他地方;在任何情況下,都不在workspace下)。

    如果您刪除global參數,您將在應用程式目錄(/workspace下)中本機安裝庫,因此安裝將在後續步驟中持續存在。

    回覆
    0
  • 取消回覆