GCP Cloud Build触发Github Tag部署App Engine时字符替换配置问题
问题根因
你之前使用的${TAG_NAME//./-}是Bash专属的字符串替换语法,Cloud Build的默认变量解析逻辑不支持该写法,直接写在args数组里会被当成普通字符串传递,无法完成预期的字符替换。
正确配置方案
直接修改deploy步骤,指定entrypoint为Bash,在Bash进程内完成变量替换后再执行部署命令即可,配置示例如下:
# 原有web:set-env、web:build步骤保留不变即可 #Deploy to google cloud app engine - id: web:deploy dir: "." name: "gcr.io/cloud-builders/gcloud" waitFor: ['web:build'] entrypoint: bash args: - -c - | VERSION=${TAG_NAME//./-} gcloud app deploy app.web.yaml --version=$VERSION --no-promote
补充说明
如果需要在多个步骤复用替换后的版本号,也可以在前置步骤将处理后的版本号写入临时文件,后续步骤读取即可:
- id: process-version name: 'gcr.io/cloud-builders/gcloud' entrypoint: bash args: - -c - echo ${TAG_NAME//./-} > /workspace/VERSION # 后续步骤使用时直接读取即可:VERSION=$(cat /workspace/VERSION)
内容的提问来源于stack exchange,提问作者Ruben Pretorius
相关产品推荐
相关产品推荐

