最终使用
options:
env:
不太完美,因为不允许在构建步骤中使用变量,但涵盖了至少环境。
GCP的Cloud build
未在substitutions
部分中替换变量。
有没有办法应用这些替代方法?
substitutions:
_HUGO_VERSION: "0.55.6"
_HUGO_IMG: gcr.io/$PROJECT_ID/hugo:$_HUGO_VERSION
用值替换$_HUGO_VERSION
和$PROJECT_ID
,得到:
_HUGO_IMG=gcr.io/foo/hugo:0.55.6
但是_HUGO_IMG
的值实际上是采用的:
_HUGO_IMG=gcr.io/$PROJECT_ID/hugo:$_HUGO_VERSION
答案 0 :(得分:3)
现在支持您的预期行为。请参阅文档: Using payload bindings and bash-style string operations in substitutions
options:
dynamic_substitutions: true
substitutions:
_HUGO_IMG: gcr.io/${PROJECT_ID}/hugo:${_HUGO_VERSION}
答案 1 :(得分:1)
感谢您发布!
您能否发布完整的配置,当我尝试此操作时,在声明替换项时使用=
而不是:
时出错。
我看到的是:
hugo version: 0.55.6
hugo img: gcr.io//hugo:
要插值默认或自定义替换,我建议改用环境变量
steps:
- id: 'checking sub values'
name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args:
- '-c'
- |
echo 'hugo version: '${_HUGO_VERSION} # hugo version: 0.55.6
echo 'hugo img: '${_HUGO_IMG} # hugo img: gcr.io//hugo:
echo 'env hugo img: '$$HUGO_IMG # env hugo img: 'gcr.io/my-project/hugo:0.55.6'
substitutions:
_HUGO_VERSION: "0.55.6"
_HUGO_IMG: 'gcr.io/$PROJECT_ID/hugo:$_HUGO_VERSION'
options:
env:
- HUGO_IMG='gcr.io/$PROJECT_ID/hugo:$_HUGO_VERSION'
请注意,环境变量必须与$$
一起使用