Heim > Fragen und Antworten > Hauptteil
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.
P粉7369355872024-04-01 00:43:36
Cloud Build的核心原则之一是在每个步骤中从下一个执行上下文开始。只有/workspace
目录在每个步骤之间保留。
在第三个步骤中,您在全局安装vue cli,因此不在当前目录(workspace的子目录)中,而是在容器运行时目录(/etc
或其他地方;在任何情况下,都不在workspace下)。
如果您删除global
参数,您将在应用程序目录(/workspace
下)中本地安装库,因此安装将在后续步骤中持续存在。