我有一个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,然后推送到project-b/release/2.3.4,以便A&B v.2.3.4都是由CI构建的。
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到目前为止,我找到的唯一稳定的工作解决方案是,将分支名称作为变量维护,并在每次需要使用fly set-pipeline (或使用Vault,但这更复杂)处理1.2.3或2.3.4版本时切换它。
或者,我可以创建两个(3,4,N)管道,每个发布版本对应一个管道。然而,到目前为止,我发现这两种选择都不太令人满意,与其他CI/CD引擎可以实现的效果相比。
总而言之,我感觉我遗漏了一些Concourse的基本概念,这里可以用来实现一个简单的目标,即检查具有相同名称的分支的两个repos,所以我真的很感谢任何帮助。
发布于 2020-05-15 20:58:35
我不相信有任何开箱即用的东西可以为你实现这一点。如果我处于类似的位置,我可能会使用相同的管道配置文件在Concourse中设置两条管道,使用占位符作为分支名称,将这些占位符的值放在两个单独的变量文件中。
https://stackoverflow.com/questions/61661104
复制相似问题