Ich habe ein Projekt mit Node + Vue JS erstellt. Das Projekt ist mit verschiedenen Verzeichnissen für Frontend- und Backend-Code strukturiert. /api
是后端代碼,有自己的package.json,而 ui
ist der Front-End-Code und verfügt auch über eine eigene package.json. Das Projekt ist wie folgt aufgebaut:
/app /api package.json /ui package.json /config cloudbuild.yaml
Ich versuche, mit Cloudbuild ein Projekt in App Engine bereitzustellen. cloudbuild.yaml
Der Aufbau der Datei ist wie folgt:
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"
Schritte 0–2 werden erfolgreich abgeschlossen, aber beim Erstellen der Vue-App für die Produktion schl?gt der Build ausdrücklich yarn run build
命令。此命令在/ui
目錄的package.json中被列為vue-cli-service build
fehl.
Die Fehlermeldung ist /bin/sh: 1: vue-cli-service: not found
Sieht so aus, als ob Cloudbuild vue-cli nicht finden kann, weil es nicht installiert ist oder nicht wei?, was es erstellen soll.
Meine Frage ist, wie man mit Cloudbuild Projekte mit unterschiedlichen Verzeichnissen in App Engine bereitstellt.
Cloud Build的核心原則之一是在每個(gè)步驟中從下一個(gè)執(zhí)行上下文開(kāi)始。只有/workspace
目錄在每個(gè)步驟之間保留。
在第三個(gè)步驟中,您在全局安裝vue cli,因此不在當(dāng)前目錄(workspace的子目錄)中,而是在容器運(yùn)行時(shí)目錄(/etc
或其他地方;在任何情況下,都不在workspace下)。
如果您刪除global
參數(shù),您將在應(yīng)用程序目錄(/workspace
下)中本地安裝庫(kù),因此安裝將在后續(xù)步驟中持續(xù)存在。