如果我先构建我的工兵应用程序,然后使用 gcloud 应用程序部署从我的本地计算机部署它,则我的 Sapper 应用程序部署 Ok。
我的app.yaml只有:runtime:nodejs10
其中可以部署到标准环境。
现在,当我尝试使用 Gitlab CI 在 git push 上进行部署时,我无法实现相同的目标。 在我的 .gitlab-ci.yml 文件中,我有 2 个作业:1 个到 npm 安装并运行构建命令,第二个作业部署到 gcloud。
2 个作业已完成,但当我检查版本时,它有一个 500 错误,日志显示:Error: Cannot find module '/srv/__sapper__/build'
.
所以这让我兜圈子。我尝试将 svelte 和 sapper 从 dev deps 移动到 package.json 中的依赖项,但它没有帮助,我已经查看了在我的 app.yaml 中添加处理程序,但我很困惑,我在 sapper github 上看到了一个问题提到了与 svelte makefile 相关的内容,以及需要为docker 映像构建它才能使用它的问题,但没有提出明确的解决方案......
我的.gitlab-ci.yml看起来像这样:
production-build:
stage: build-for-prod
image: node:10
script:
- npm install
- npm run build
only:
- master
prod-deploy:
stage: production
only:
- master
needs: ["production-build"]
image: google/cloud-sdk:alpine
environment: PROD
script:
- echo $SERVICE_ACCOUNT_KEY > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud --quiet --project sapper1-test app deploy app.yaml --verbosity debug --no-promote
after_script:
- rm /tmp/$CI_PIPELINE_ID.json
如果我错了,请纠正我,但对我来说,这似乎是您配置错误。作业在单独的容器中运行,部署无权访问生成结果,这就是它缺少依赖项的原因。
工件可能有助于传递构建的库。但我只会构建一个包含 Nodejs 和 Cloud SDK 的自定义映像,并在此映像之上组合两个作业。