Build CI Triggered Pipeline Триггеры развертывания - PullRequest
0 голосов
/ 30 апреля 2020

Попытка собрать воедино документацию (https://docs.microsoft.com/en-us/azure/devops/pipelines/process/pipeline-triggers) по триггеру / ресурсам, чтобы создать набор конвейеров, у которых будет конвейер сборки, запускаемый фиксацией, и когда этот конвейер завершает конвейер развертывания, использует артефакты и развертывает их. Причина наличия отдельного конвейера сборки и развертывания заключается в том, что пакетные коммиты для PR попадают в основную линию (read-as: master)

В то время как приведенные ниже файлы конвейера работают, когда сборка запускается вручную при выполнении фиксации до репо запущены оба трубопровода. Это не то, что нужно. Если триггеры удалены из конвейера развертывания, то триггеры от конвейера к конвейеру работают.

Мы хотим:

  1. Repo commit
  2. Построение конвейера запускается
  3. Построение конвейера публикует артефакты
  4. Развертывание конвейера запускается
  5. Развертывание конвейера использует артефакты
  6. Развертывание конвейера развертывает артефакты

build-pipeline.yml

name: $(date:yyyy).$(date:MM).$(date:dd)$(rev:.r)

trigger:
- master
- feature/*

pool:
vmImage: 'ubuntu-latest'

variables:
artifactsName: "artifacts"

steps:
- task: PowerShell@2
inputs:
    targetType: 'inline'
    script: |
    Write-Host "Executing Build"
    Write-Host "Creating Artifacts"
    New-Item -Type Directory -Path $(artifactsName)
    $artifactPath = Join-Path -Path $(artifactsName) -ChildPath "$(Build.BuildNumber).txt"
    Set-Content -Path $artifactPath -Value "$(Get-Date)"
    pwsh: true

- task: PublishPipelineArtifact@1
inputs:
    targetPath: $(artifactsName)
    artifactName: buildartifacts

deploy-pipeline.yml

resources:
pipelines:
- pipeline: buildpipeline
    source: -splitpipeline-build
    trigger:
    branches:
        include:
        - master
        - feature/*

pool:
vmImage: 'ubuntu-latest'

steps:
- script: echo Deploy Step 
displayName: 'Deploy'

1 Ответ

0 голосов
/ 01 мая 2020

Вы должны добавить trigger: none к вашему deploy-pipeline.yml, если хотите избежать запуска после коммита. Также существует вероятность, что pr: none необходим, поскольку конвейер может работать при создании запроса на извлечение. Подводя итог, это работает так:

build-pipeline.yml

name: $(date:yyyy).$(date:MM).$(date:dd)$(rev:.r)

trigger:
- master
- feature/*

pool:
  vmImage: 'ubuntu-latest'

variables:
  artifactsName: "artifacts"

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "Executing Build"
      Write-Host "Creating Super Artifacts"
      New-Item -Type Directory -Path $(artifactsName)
      $artifactPath = Join-Path -Path $(artifactsName) -ChildPath "$(Build.BuildNumber).txt"
      Set-Content -Path $artifactPath -Value "$(Get-Date)"
    pwsh: true

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: $(artifactsName)
    artifactName: buildartifacts

deploy-pipeline.yml

resources:
  pipelines:
  - pipeline: buildpipeline
    source: stackoverflow\kmadof.dm-so-15-a
    trigger:
      branches:
        include:
        - master
        - feature/*

trigger: none

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo Deploy Step 
  displayName: 'Deploy'

Пожалуйста, проверьте do c для более подробной информации:

Когда вы указываете как триггеры CI, так и триггеры конвейера, вы можете ожидать, что новые прогоны будут запускаться каждый раз время (а) обновление вносится в хранилище и (б) запуск восходящего конвейера завершается. Рассмотрим пример конвейера B, который зависит от A. Предположим также, что оба этих конвейера используют один и тот же репозиторий для исходного кода, и что у них обоих также настроены триггеры CI. Когда вы делаете sh обновление для хранилища, тогда:

  • Запускается новый прогон A.
  • В то же время запускается новый прогон B. Этот прогон будет потреблять ранее произведенные артефакты из A.
  • По завершении A, он будет запускать еще один прогон B.

Чтобы предотвратить запуск двух прогонов B в этом примере, вы необходимо удалить его триггер CI или триггер конвейера.

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