Concourse 如何参数化广场任务文件
广场的力量和简洁给我留下了深刻的印象。由于我的管道不断增长,我决定将任务移动到单独的文件中。其中一个任务使用来自我们自己的私有注册表的自定义Docker映像。因此,在该任务文件中,我有:Concourse 如何参数化广场任务文件,concourse,Concourse,广场的力量和简洁给我留下了深刻的印象。由于我的管道不断增长,我决定将任务移动到单独的文件中。其中一个任务使用来自我们自己的私有注册表的自定义Docker映像。因此,在该任务文件中,我有: image_resource: type: docker-image source: repository: docker.mycomp.com:443/app-builder tag: latest username: {{dckr-user}} password: {
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中的任何参数,这是不可能的,在我看来,这是管道/任务概念设计中的一个缺陷。它打破了在通用库中拥有任务的可能性,因此避免了任务的重复使用。