Как условно запустить один конвейер из другого в Azure Devops? - PullRequest
3 голосов
/ 07 января 2020

ОК, поэтому мы работаем над архитектурой микросервиса и пытаемся развернуть код на azure devOps. на самом деле мы хотим запускать только один конвейер при изменении одного проекта. мы используем monorepo architecute.

Вот как я добавил условие в настоящее время для специфики проекта: c build.yaml

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)
steps:
  # for PowerShell Core
  - pwsh: ./build.ps1
  # Restore sms-messaging micro service projects
  - task: DotNetCoreCLI@1
    displayName: Run dotnet restore
    inputs:
      command: "restore"
      projects: sms-messaging/src/**/*.csproj
    condition:  and(succeeded(), eq(variables['SmsMessaging'], 'True'))

условие содержит переменную SmsMessaging из сценария powershell это выполняется раньше.

$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
For ($i=0; $i -lt $temp.Length; $i++)
{
  $name=$temp[$i]
  echo "this is $name file"
  if ($name -like "sms-messaging/*")
  {
    echo "changes in sms-messaging"
    Write-Host "##vso[task.setvariable variable=SmsMessaging]True"
  }
}

Таким образом, настоящая проблема заключается в том, что при подталкивании к репо. все трубопроводы срабатывают. Задачи пропускаются из-за добавленного условия. Но мы на самом деле не хотим запускать все конвейеры.

Для этого я создал основной конвейер, в котором были бы сценарий powerShell и переменные. и будет условно запускать другие трубопроводы.

Но я не могу добавить «условие» к этому ямлу.

resources:
  pipelines:
  - pipeline: SmsMessaging
    project: SmsMessaging
    source: SmsMessaging
    trigger:
      branches:
        include:
        - master
      (i want to add condition here maybe if thats possible ? and trigger different pipelines from here. Or if there is another approach)

это правильный подход? Любая помощь приветствуется. Спасибо

РЕДАКТИРОВАТЬ: Я также попытался войти и запустить конвейеры через Powershell.

Invoke-AzDataFactoryV2Pipeline -ResourceGroupName "RGName" -DataFactoryName "FactoryName" -PipelineName "PipelineName"

, но это не позволяет мне запустить конвейер, говоря, что требуется идентификатор организации.

1 Ответ

2 голосов
/ 14 января 2020

Вы можете комбинировать свой подход с фильтрами путей. Вы можете запустить сборку, используя триггеры пути в своей архитектуре monorepo. Что-то вроде:

trigger:
  branches:
    include:
    - master
  paths:
    include:
    - path/to/SmsMessaging/*

Если это не поможет, взгляните на это расширение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...