匹配Concourse CI中两个Git资源的分支名称

时间:2020-05-07 15:04:18

标签: git continuous-integration concourse concourse-git-resource

我有一个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的一些基本概念,可以在这里使用它来实现一个简单的目标,以检出具有同名分支的两个存储库,因此,我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不认为有任何现成的方法可以为您实现这一目标。如果我处于相似的位置,则可能会使用相同的管道配置文件在Concourse中设置两个管道,使用占位符表示分支名称,并在两个单独的变量文件中使用这些占位符的值。