J'ai construit un projet en utilisant Node + Vue JS, le projet est structuré avec différents répertoires pour le code frontend et backend. /api
是后端代码,有自己的package.json,而 ui
est le code frontal et possède également son propre package.json. Le projet est structuré comme suit :
/app /api package.json /ui package.json /config cloudbuild.yaml
J'essaie de déployer un projet sur App Engine à l'aide de Cloudbuild. cloudbuild.yaml
La structure du dossier est la suivante :
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"
Les étapes 0 à 2 se terminent avec succès, mais lors de la création de l'application Vue pour la production, la construction échoue spécifiquement yarn run build
命令。此命令在/ui
目录的package.json中被列为vue-cli-service build
.
Le message d'erreur est /bin/sh: 1: vue-cli-service: not found
On dirait que Cloudbuild ne trouve pas vue-cli, comme s'il n'était pas installé ou ne savait pas quoi construire.
Ma question est de savoir comment déployer des projets avec différents répertoires sur App Engine à l'aide de Cloudbuild ?
L'un des principes fondamentaux de Cloud Build est de commencer par le contexte d'exécution suivant à chaque étape. Seul le répertoire
/workspace
est conservé entre chaque étape.Dans la troisième étape, vous installez vue cli globalement, donc pas dans le répertoire courant (un sous-répertoire de l'espace de travail), mais dans le répertoire d'exécution du conteneur (
/etc
ou ailleurs ; en tout cas, pas sous l'espace de travail) .Si vous supprimez le paramètre
global
, vous installerez la bibliothèque localement dans le répertoire de l'application (sousglobal
参数,您将在应用程序目录(/workspace
), donc l'installation persistera dans les étapes suivantes.