Mar*_*S82 4 google-app-engine google-cloud-platform google-cloud-build
我有一个在应用程序引擎上运行的nodejs 项目。直到昨天为止,这一切都运行良好。我的 package.json 也已上传,因为它包含依赖项和启动脚本。当我部署谷歌云构建时会自动运行。从昨天开始,它还尝试运行“npm run build”。当然这会失败,因为我没有上传任何源文件。
我没有配置这个,我想知道为什么行为会改变。
要上传,我使用 gcloud 命令:
gcloud app deploy --version v1
我的 app.yml 如下所示:
# [START app_yaml]
runtime: nodejs16
instance_class: F1
automatic_scaling:
max_instances: 1
entrypoint: npm run cloud-start
handlers:
- url: /api/.*
script: auto
secure: always
- url: /(.*\.(gif|png|jpg|css|js|json)(|\.map))$
static_files: dist/www/\1
upload: dist/www/(.*)(|\.map)
secure: always
expiration: "100d 0h"
- url: /|(.*)|index.html
static_files: dist/www/index.html
upload: dist/www/index.html
expiration: "0d 0h"
secure: always
# [END app_yaml]
Run Code Online (Sandbox Code Playgroud)
.cloudignore:
# Ignore everything
/[!.]*
/.?*
# Except the Cloud Function files we want to deploy
!/package.json
!/package-lock.json
!/dist/**
#!include:.gitignore
Run Code Online (Sandbox Code Playgroud)
今天我也被这个问题困扰了,我花了一整天的时间才终于弄清楚。
这 100% 是 Google 对 Nodejs 的 gcloud 应用程序部署脚本的功能更改。
值得庆幸的是,下面有一个简单的解决方法,但首先我想咆哮并给出背景:今天下午,当我部署一个完全微小且不相关的更改时,我收到了一个 buildbreaker。本地一切工作正常,因此我尝试将以前的构建重新部署到开发环境。它也失败了。
经过研究,我发现了和你一样的事情;一个意外的电话npm build
。经过更多研究后,我找到了解决方法。
事实证明,谷歌几天前武断地决定build
在没有脚本的情况下开始运行“如果存在”package.json
作为后备gcp-build
。值得庆幸的是,包含一个空白gcp-build
脚本package.json
解决了这个问题。请参阅下面的示例
我从未收到谷歌云的通知说他们正在这样做。
我和你一样,使用 my 中的 npm 构建脚本预先打包我的构建,然后在抑制原始源文件夹的同时package.json
运行。gcloud deploy
我和你一样,没有包含gcp-build
脚本,因为我没有特殊的构建需求。
解决方法
添加"gcp-build": ""
到scripts
您的package.json
.
例子:
{
"name": "myapp",
"main": "mybuild/index.js",
"scripts": {
"build": "tsc",
"start": "node mybuild/index.js",
"gcp-build": ""
},
}
Run Code Online (Sandbox Code Playgroud)
gcp-build
如果脚本部分中有命令,Google Cloud 将尝试运行该命令,而不是build
. 如果它是空白的,它将不会执行任何操作,但最重要的是不会回退到build
.
以后的参考
这是当前信息,谷歌很有可能很快就会更改此功能。我将尽力关注事态发展并根据需要进行更新
更新
看起来谷歌也将其推广到了云功能。
归档时间: |
|
查看次数: |
249 次 |
最近记录: |