Google cloud platform 谷歌云-cloubduild和应用程序在触发器中的可变替换

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,类似

当github中出现新提交时,我正在使用cloudbuild部署我的应用程序的新版本。 一切正常

现在,我正在尝试在触发器配置中设置一个变量替换,因为我想在触发器中输入一次版本号,这样我就可以在不修改cloudbuild配置文件的情况下找到已部署的正确版本。 变量替换在我的cloudbuild文件中非常有效,例如: (cloudbuild.yaml)

${u VERSION}已正确替换为我放入触发器的字符串

现在我想在app.yaml文件中获得相同的结果,替换一个env variabile,类似于: (附录yaml)

当我从我的应用程序中读取TEST_ENV时,它可以工作,但是_版本并没有被替换


有什么建议吗?

执行此步骤时

# 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字符串中有一些不好的地方),但你为我指明了正确的方向。我使用语法突破解决了这个问题,我也将发布我的解决方案。