Проблема
У меня есть два репозитория A
и B
в одном проекте, каждый со своим конвейером A-CI
и B-CI
. Репо Azure Репо Git (поэтому не внешние). Я запустил конвейер B-CI
, когда A-CI
завершился. Если A-CI
был получен при фиксации ветки develop
, то B-CI
запускается для сборки master
, хотя B
также имеет ветку develop
.
Я хочу создать новую версию B
для среды разработки, когда была создана новая версия dev A
.
Можно ли позволить конвейеру-ресурсу запускать конвейер B-CI
для построения ветви с тем же именем, что и ветка, только что построенная pipe-ресурсом? Для меня было бы хорошо, если бы он отступил до master
, если соответствующая ветвь недоступна в B
.
Этот сценарий работает, однако, если A-C
и B-CI
оба ссылаются на различные трубопроводные ямы одного и того же хранилища.
трубопроводные YAML
A-CI
trigger:
- '*'
stages:
- stage: Build
jobs:
- job: BuildJob
pool:
name: 'MyBuildPool'
steps:
- powershell: |
Write-Host "Building A"
B-CI
resources:
pipelines:
- pipeline: Pipeline_A
source: 'A-CI'
trigger:
branches:
- master
- develop
- feature/*
trigger:
- '*'
stages:
- stage: Build
jobs:
- job: BuildJob
pool:
name: MyBuildPool
steps:
- powershell: |
Write-Host $(Build.SourceBranch) # is always refs/heads/master
Write-Host $(Build.Reason) # is ResourceTrigger
Справочная информация
Основная идея заключается в том, что A
содержит проект Ia C и всякий раз, когда изменяется инфраструктура проекта, тогда все приложения также должны быть развернуты.
Я не хочу помещать Ia C в репозиторий приложений, потому что у нас есть несколько приложений, поэтому мне придется разбить код Ia C на несколько частей.
И тогда у меня, вероятно, останется та же проблема, потому что некоторые ресурсы, такие как Azure KeyVault, распределяются между приложениями, поэтому A
будет по-прежнему включать в себя общий материал, используемый всеми приложениями, и для его изменения потребуется повторное развертывание все приложения.