如何解决Google云-触发器中的cloubduild和应用程序可变替换
当新提交出现在github中时,我正在使用cloudbuild部署我的应用程序的新版本。 一切都很好。
现在,我正在尝试在触发器配置中设置变量替换,因为我想将版本号一次放入触发器中,以便我可以找到已部署的正确版本,而无需修改cloudbuild配置文件。 可变替换在我的cloudbuild文件中很好用,例如: (cloudbuild.yaml)
# TEST: PRINT VARIABLE IN LOG
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args: ['-c','echo','${_VERSION}']
# DEPLOY APP
- name: "gcr.io/cloud-builders/gcloud"
args: ["app","deploy","-v","${_VERSION}","app.yaml"]
dir: 'frontend'
timeout: "20m"
$ {_ VERSION}已正确替换为我在触发器中输入的字符串。
现在,我想在app.yaml文件中获得相同的结果,用env变量替换,例如: (app.yaml)
runtime: nodejs
env: flex
service: backend
env_variables:
VERSION: "${_VERSION}"
TEST_ENV: "read from google"
当我从应用程序中读取TEST_ENV时,它可以工作,但是_VERSION不会被替换。
有什么建议吗?
解决方法
执行此步骤
# DEPLOY APP
- name: "gcr.io/cloud-builders/gcloud"
args: ["app","deploy","-v","${_VERSION}","app.yaml"]
dir: 'frontend'
timeout: "20m"
app.yaml
是按原样提供给gcloud命令的,并且不进行评估。您必须手动更新。像这样
# REPLACE: PUT THE CORRECT VALUE IN APP.YAML FILE
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args: ['-c','sed',"-i","sed -i "s/\$${_VERSION}/${_VERSION}/g",'app.yaml']
当然,如果您允许
env_variables:
VERSION: "${_VERSION}"
原样位于您的app.yaml
文件中。您可以更改此替换字符串
如果有人对giullade提出的解决方案有问题,我想添加此解决方案(在我的情况下,cloudbuild在执行sed命令时给了我一个错误)。
我还将替换字符串更改为更易读的字符串,并避免了转义$符号。
# Step 0: REPLACE variables in app.yaml file
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
dir: 'backend'
args:
- '-c'
- |
sed -i "s/__VERSION/${_VERSION}/g" app-staging.yaml
并在我的app.yaml中:
env_variables:
VERSION_ENV: "__VERSION"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。