云构建:“替换”部分中的替换?

Mar*_*yan 3 google-cloud-platform google-cloud-build

2019-07-04:更新

结束使用

options:
   env:
Run Code Online (Sandbox Code Playgroud)

不完美,因为在构建步骤中不允许变量,但至少涵盖了环境。

问题

GCPCloud build不会在substitutions节中替换变量。

有没有办法应用这些替换?

示例片段

substitutions:
  _HUGO_VERSION: "0.55.6"
  _HUGO_IMG: gcr.io/$PROJECT_ID/hugo:$_HUGO_VERSION
Run Code Online (Sandbox Code Playgroud)

期待

拥有$_HUGO_VERSION$PROJECT_ID替换为值,得到:

_HUGO_IMG=gcr.io/foo/hugo:0.55.6
Run Code Online (Sandbox Code Playgroud)

实际的

但是 for 的值_HUGO_IMG从字面上看:

_HUGO_IMG=gcr.io/$PROJECT_ID/hugo:$_HUGO_VERSION
Run Code Online (Sandbox Code Playgroud)

小智 6

现在支持您的预期行为。请参阅文档: 在替换中使用负载绑定和 bash 样式的字符串操作

options:
    dynamic_substitutions: true
substitutions:
    _HUGO_IMG: gcr.io/${PROJECT_ID}/hugo:${_HUGO_VERSION}
Run Code Online (Sandbox Code Playgroud)


小智 5

感谢您发布此信息!

你能发布完整的配置吗,当我尝试这个时,我得到一个错误,因为使用=而不是:声明替换时。

我看到的行为是:

hugo version: 0.55.6
hugo img: gcr.io//hugo:
Run Code Online (Sandbox Code Playgroud)

要插入默认或自定义替换,我建议改用 env 变量

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'
Run Code Online (Sandbox Code Playgroud)

请注意,环境变量需要与 $$