如何将 package.json 版本 ID 部署到 AppEngine 柔性环境 --version 参数?

How do I deploy the package.json version id to AppEngine flexible environment --version argument?

使用 gcloud app deploy 部署的 AppEngine 灵活环境通常很慢,因为 AppEngine 必须在部署代码并将流量切换到容器环境之前启动容器环境。

加速部署的常用方法是指定版本,这样 AppEngine 就可以将新代码部署到相同的容器环境中。如:

gcloud app deploy --version=12345

在节点环境中,我想在我的部署脚本中使用 package.json 版本,例如:

{
  "name": "MyApp",
  "version": "1.3.4",
  "scripts": {
    "deploy":"gcloud app deploy --version=$npm_package_version"        
  }

NPM 获取配置中的值并将其添加到以 $npm_package_ 为前缀的环境变量中,这样就可以了。

但是,AppEngine 不接受其版本名称中的 .

所以我正在寻找一种好方法,将 $npm_package_version 转换为 AppEngine 批准的版本号,然后才能将其传递到 <scripts> 节点上的 gcloud

我找到了一个适合我的简单解决方案。

下面是我截断的package.json

{
  "name": "...",
  "version": "1.0.1",
  "scripts": {
    "deploy": "GAE_VERSION=$(echo ${npm_package_version} | sed 's/\./-/g') && gcloud app deploy --version $GAE_VERSION"
  },
  "dependencies": {...},
  "devDependencies": {...}
}

这实际上非常简单。

  1. 获取 npm_package_version 并用 sed . 更改为 -(GAE 可以使用连字符)
  2. 将结果赋给一个变量(此处:GAE_VERSION
  3. 使用 gcloud 命令使用 GAE_VERSION 变量进行部署。