云构建:“替代”部分中的替代内容?

时间:2019-06-28 03:34:20

标签: google-cloud-platform google-cloud-build

2019-07-04:更新

最终使用

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

2 个答案:

答案 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'

请注意,环境变量必须与$$一起使用