Сопоставление имен веток двух Git ресурсов в Concourse CI - PullRequest
0 голосов
/ 07 мая 2020

У меня есть настройка конвейера Concourse CI, которая логически зависит от двух отдельных ресурсов Git.

Для определенных требований c, скажем, при выпуске версии 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, т.е. можно от sh до project-a/release/1.2.3, чтобы оба A и B v.1.2.3 попали в CI, а затем pu sh на 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

Единственное стабильное рабочее решение, которое я нашел до сих пор, - это сохранение имени ветки в качестве переменной и ее переключение каждый раз, когда мне нужно обрабатывать выпуск 1.2.3 или 2.3.4 с помощью fly set-pipeline (или с помощью Vault, но это еще сложнее).

В качестве альтернативы я могу создать два (3, 4, N) конвейера, по одному для каждой имеющейся у меня версии выпуска. Однако я считаю, что оба варианта пока что едва удовлетворительны по сравнению с тем, что может быть достигнуто с помощью других движков CI / CD.

В целом, мне кажется, что мне не хватает какой-то базовой c концепции Concourse, которую можно использовать здесь для достижения простой цели - проверить два репозитория с ветвью с одинаковыми названиями, поэтому я был бы очень признателен за любой помощь.

1 Ответ

1 голос
/ 15 мая 2020

Я не верю, что есть что-то нестандартное, что может сделать это за вас. Если бы я был в аналогичном положении, я бы, вероятно, использовал тот же файл конфигурации конвейера для установки двух конвейеров в Concourse, используя заполнители для имен веток, со значениями этих заполнителей в двух отдельных файлах переменных.

...