如何将 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": {...}
}
这实际上非常简单。
- 获取
npm_package_version
并用 sed
.
更改为 -
(GAE 可以使用连字符)
- 将结果赋给一个变量(此处:
GAE_VERSION
)
- 使用
gcloud
命令使用 GAE_VERSION
变量进行部署。
使用 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": {...}
}
这实际上非常简单。
- 获取
npm_package_version
并用sed
.
更改为-
(GAE 可以使用连字符) - 将结果赋给一个变量(此处:
GAE_VERSION
) - 使用
gcloud
命令使用GAE_VERSION
变量进行部署。