3

Concourse 的强大功能和简单性给我留下了深刻的印象。由于我的管道不断增长,我决定将任务移动到单独的文件中。其中一项任务使用我们自己的私有注册表中的自定义 Docker 映像。所以,在那个任务文件中,我有:

image_resource:
  type: docker-image
  source:
    repository: docker.mycomp.com:443/app-builder
    tag: latest
    username: {{dckr-user}}
    password: {{dckr-pass}}

当我执行 set-pipeline 时,我通过 --load-from-vars 参数从单独的文件中加载凭据等。

现在这是我的问题:我注意到我的管道文件中的变量被替换为实际正确的值,但是一旦任务运行,前面提到的 {{dckr-user}} 和 {{dckr-pass}} 不会被替换。

我如何实现这一目标?

4

3 回答 3

5

除了此答案中提供的内容

如果您特别希望在任务中使用私有图像,您可以在您的pipeline.yml:

resources:
- name: some-private-image
  type: docker
  params:
    repository: ...
    username: {{my-username}}
    password: {{my-password}}

jobs:
- name: foo
  plan:
  - get: some-private-image
  - task: some-task
    image: some-private-image

因为这是您的管道,您可以使用--load-vars-from,它将首先将get您的图像作为资源,然后将其用于后续任务。

您还可以在 Concourse 上查看有关在测试容器中预取 ruby​​ gems 的文章

唯一的缺点是在运行fly execute.

于 2017-03-14T17:41:10.177 回答
2

concourse v3.3.0 开始,您可以设置凭证管理以使用当前受支持的凭证管理器之一的变量,这些凭证管理器是VaultCredhubAmazon SSMAmazon Secrets Manager。因此,您不必再将任务文件部分分开pipeline.yml。您在 Vault 中设置的值也可以从task.yml文件中访问。

并且由于不推荐使用 v3.2.0{{foo}}以支持((foo)).

使用凭证管理器,您可以参数化:

  • source在资源下pipeline
  • source在资源类型下pipeline
  • webhook_token在资源下pipeline
  • image_resource.source在 image_resource 下task config
  • params在一个pipeline
  • params在一个task config

要使用大厅设置保险库,您可以参考:

https://concourse-ci.org/creds.html

于 2017-06-30T18:37:29.890 回答
1

您始终可以在 pipeline.yml 中定义任务...例如:

jobs:
- name: dotpersecond
  plan:
  - task: dotpersecond
    config:
      image_resource:
        type: docker-image
        source:
          repository: docker.mycomp.com:443/app-builder
          tag: latest
          username: {{dckr-user}}
          password: {{dckr-pass}}
      run:
        path: sh
        args:
          - "-c"
          - |
            for i in `seq 1000`; do echo hi; sleep 2; done
于 2017-03-14T17:35:30.237 回答