我有一个Concourse CI管道设置,该设置在逻辑上取决于两个单独的Git资源。
对于特定需求,例如发布版本m.n.o
,管道需要同时签出两个项目。重要的是,它需要在两个分支中引用相同的release/m.n.o
。此外,我希望通过更新项目A和B来触发我的管道,并且当然应该满足匹配的分支名称要求,例如如果我更新project-a/release/1.2.3
,则希望Concourse CI检出project-b/release/1.2.3
而不检出其他任何内容。值得一提的是,两个项目中可能有多个release/m.n.o
分支处于活动状态,即一个分支可以推送到project-a/release/1.2.3
,以便A和B v.1.2.3都进入CI,然后推送到{ {1}},以便A和B v.2.3.4均由CI构建。
project-b/release/2.3.4
到目前为止,我找到的唯一稳定的工作解决方案是,将分支名称保留为变量,并在每次需要使用resource_types:
- name: git-multibranch
type: docker-image
source:
repository: cfcommunity/git-multibranch-resource
resources:
- name: code
type: git-multibranch
source:
uri: git@bitbucket.org:project-a.git
branches: 'release/.*'
- name: config
type: git-multibranch
source:
uri: git@bitbucket.org:project-b.git
branches: 'release/.*'
jobs:
- name: build
plan:
- get: code
version: latest
trigger: true
- get: config
version: every
trigger: true
# ... more stuff
(或使用保险柜,但这更加复杂)。
或者,我可以创建两个(3、4,N)个管道,每个版本都有一个。但是,与其他CI / CD引擎相比,到目前为止,我发现这两种选择都无法令人满意。
总体而言,感觉好像我缺少了Concourse的一些基本概念,可以在这里使用它来实现一个简单的目标,以检出具有同名分支的两个存储库,因此,我非常感谢您的帮助。
答案 0 :(得分:1)
我不认为有任何现成的方法可以为您实现这一目标。如果我处于相似的位置,则可能会使用相同的管道配置文件在Concourse中设置两个管道,使用占位符表示分支名称,并在两个单独的变量文件中使用这些占位符的值。