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

问题描述 投票:0回答:1

我有一个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: [email protected]:project-a.git
      branches: 'release/.*'

  - name: config
    type: git-multibranch
    source:
      uri: [email protected]:project-b.git
      branches: 'release/.*'

jobs:
  - name: build
    plan:
      - get: code
        version: latest
        trigger: true

      - get: config
        version: every
        trigger: true

# ... more stuff

到目前为止,我找到的唯一稳定的工作方案是,将分支名作为一个变量,并在每次需要处理1.2.3或2.3.4版本时用 fly set-pipeline (或者使用Vault,但那更复杂)。

另外,我也可以创建两个(3,4,N)管道,每个版本我都有一个。然而,我发现到目前为止,这两种方案与其他CICD引擎所能实现的相比,勉强令人满意。

总的来说,感觉我缺少了Concourse的一些基本概念,在这里可以用它来实现一个简单的目标,即检查具有相同名称分支的两个仓库,所以我真的很感激任何帮助。

git continuous-integration concourse concourse-git-resource
1个回答
1
投票

我不相信有什么开箱即用的东西可以为你实现这个目标。如果我处于类似的位置,我可能会在Concourse中使用同一个管道配置文件来设置两个管道,使用分支名称的占位符,这些占位符的值在两个单独的变量文件中。

© www.soinside.com 2019 - 2024. All rights reserved.