Concourse 如何参数化广场任务文件

Concourse 如何参数化广场任务文件,concourse,Concourse,广场的力量和简洁给我留下了深刻的印象。由于我的管道不断增长,我决定将任务移动到单独的文件中。其中一个任务使用来自我们自己的私有注册表的自定义Docker映像。因此,在该任务文件中,我有: image_resource: type: docker-image source: repository: docker.mycomp.com:443/app-builder tag: latest username: {{dckr-user}} password: {

广场的力量和简洁给我留下了深刻的印象。由于我的管道不断增长,我决定将任务移动到单独的文件中。其中一个任务使用来自我们自己的私有注册表的自定义Docker映像。因此,在该任务文件中,我有:

image_resource:
  type: docker-image
  source:
    repository: docker.mycomp.com:443/app-builder
    tag: latest
    username: {{dckr-user}}
    password: {{dckr-pass}}
当我设置管道时,我将--load from vars参数传递给从单独的文件加载凭据等

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


如何实现这一点?

您始终可以在管道中定义任务。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

除此之外

如果您特别希望在任务中使用私有映像,则可以在
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
,这将首先
获取图像作为资源,然后将其用于后续任务

你也可以看到这个

唯一的缺点是在运行
飞行执行时无法使用此技术。从开始,您可以设置以使用当前、和支持的其中一个凭据管理器中的变量。因此,您不再需要在
pipeline.yml
中部分分离任务文件。您在Vault中设置的值也可以从
task.yml
文件中访问

而且由于v3.2.0
{{foo}}
被弃用,取而代之的是
((foo))

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

  • 管道中的资源下的
    源代码
  • source
    管道中的资源类型下
  • webhook\u令牌
    位于
    管道中的资源下
  • image\u resource.source
    在任务配置中的image\u resource下
  • 管道中的
    参数
  • 任务配置中的
    参数
有关使用concourse设置vault的信息,您可以参考:


查看有关Slack的此主题的讨论,这很快就会到来。它已合并到广场GitHub repo上的
Master
。请参见>…该解决方案的问题是管道需要知道任务需要哪个映像-我宁愿在任务的配置中看到,而不是在管道中看到。如果您需要task.yml中的任何参数,这是不可能的,在我看来,这是管道/任务概念设计中的一个缺陷。它打破了在通用库中拥有任务的可能性,因此避免了任务的重复使用。