Saya telah membina projek menggunakan Node + Vue JS, projek itu distrukturkan dengan direktori yang berbeza untuk kod bahagian hadapan dan bahagian belakang. /api
是后端代码,有自己的package.json,而 ui
ialah kod bahagian hadapan dan juga mempunyai pakej sendiri.json. Projek ini disusun seperti berikut:
/app /api package.json /ui package.json /config cloudbuild.yaml
Saya cuba menggunakan projek ke App Engine menggunakan Cloudbuild. cloudbuild.yaml
Struktur fail adalah seperti berikut:
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"
Langkah 0-2 berjaya diselesaikan, tetapi apabila membina apl Vue untuk pengeluaran, binaan gagal secara khusus yarn run build
命令。此命令在/ui
目录的package.json中被列为vue-cli-service build
.
Mesej ralat ialah /bin/sh: 1: vue-cli-service: not found
Nampaknya Cloudbuild tidak dapat mencari vue-cli, seperti tidak dipasang atau tidak tahu apa yang hendak dibina.
Soalan saya ialah bagaimana untuk menggunakan projek dengan direktori berbeza ke App Engine menggunakan Cloudbuild?
Salah satu prinsip teras Cloud Build ialah bermula dengan konteks pelaksanaan seterusnya pada setiap langkah. Hanya direktori
/workspace
dikekalkan antara setiap langkah.Dalam langkah ketiga, anda memasang vue cli secara global, jadi bukan dalam direktori semasa (subdirektori ruang kerja), tetapi dalam direktori masa jalan kontena (
/etc
atau di tempat lain; dalam apa jua keadaan, bukan di bawah ruang kerja) .Jika anda mengalih keluar parameter
global
, anda akan memasang pustaka secara setempat dalam direktori aplikasi (di bawahglobal
参数,您将在应用程序目录(/workspace
), jadi pemasangan akan berterusan dalam langkah seterusnya.