Google cloud platform 谷歌云-cloubduild和应用程序在触发器中的可变替换
当github中出现新提交时,我正在使用cloudbuild部署我的应用程序的新版本。 一切正常 现在,我正在尝试在触发器配置中设置一个变量替换,因为我想在触发器中输入一次版本号,这样我就可以在不修改cloudbuild配置文件的情况下找到已部署的正确版本。 变量替换在我的cloudbuild文件中非常有效,例如: (cloudbuild.yaml) ${u VERSION}已正确替换为我放入触发器的字符串 现在我想在app.yaml文件中获得相同的结果,替换一个env variabile,类似于: (附录yaml) 当我从我的应用程序中读取TEST_ENV时,它可以工作,但是_版本并没有被替换Google cloud platform 谷歌云-cloubduild和应用程序在触发器中的可变替换,google-cloud-platform,google-cloud-build,app.yaml,Google Cloud Platform,Google Cloud Build,App.yaml,当github中出现新提交时,我正在使用cloudbuild部署我的应用程序的新版本。 一切正常 现在,我正在尝试在触发器配置中设置一个变量替换,因为我想在触发器中输入一次版本号,这样我就可以在不修改cloudbuild配置文件的情况下找到已部署的正确版本。 变量替换在我的cloudbuild文件中非常有效,例如: (cloudbuild.yaml) ${u VERSION}已正确替换为我放入触发器的字符串 现在我想在app.yaml文件中获得相同的结果,替换一个env variabile,类似
有什么建议吗?执行此步骤时
# 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
文件中所示。执行此步骤时,可以更改此替换字符串
# 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"
我想添加这个解决方案,以防有人对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"
谢谢@guillaume blaquiere,您的回答不起作用(我认为args字符串中有一些不好的地方),但您为我指明了正确的道路。我使用语法突破解决了问题,我也会发布我的解决方案。谢谢@guillaume blaquiere,你的回答不起作用(我认为args字符串中有一些不好的地方),但你为我指明了正确的方向。我使用语法突破解决了这个问题,我也将发布我的解决方案。