Azure Devops - определить порядок сборки и выпуска - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть несколько сборок, которые смотрят один и тот же репозиторий / ветку.Есть ли способ определить порядок выполнения сборок / выпусков?Можно определить триггер после завершения сборки, запустить другой, но этот метод не может выполнять сборки параллельно.Это нормально, если бы я мог определить порядок релизов.Я искал, но не смог найти способ добиться этого.Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Что касается порядка сборки, вы можете найти некоторые задачи в Marketplace, чтобы вызвать / поставить в очередь новую сборку, например, Trigger Build Task :

Задача сборки, которую можно использовать для запуска новой сборки, чтобы было возможно построение цепочки.Поддерживает также условные триггеры.

Текущая версия задачи (V3) выглядит следующим образом:

Trigger Build screenshot

НапримерПредположим, вы хотите запустить следующие сборки в этом конкретном порядке:

  1. B1
  2. B2

B1 будет запускаться при изменении кода (непрерывноинтеграции) и последней задачей сборки будет та, о которой я упоминал выше, для запуска сборки B2.B2 будет установлен как ручная сборка.

0 голосов
/ 21 февраля 2019

Вы можете определить порядок выполнения сборок (CI) и выпусков (CD).

Чтобы определить порядок сборки


Если вы хотите определить выполнение сборки CIСамый простой способ сделать это - использовать YAML и использовать модель с несколькими заданиями.Затем упорядочите каждую работу в зависимости от другой работы, которая должна быть выполнена первой.

Например:

jobs:
- job: JOB1
  pool:
    vmImage: 'vs2017-win2016'

  steps:
  - script: |
      echo "hello from vmImage vs2017-win2016"
      echo "compile webnoauth.csproj using VS2017"

  - task: MSBuild@1
    displayName: Build WebFormsNoAuth.csproj
    inputs:
      solution: $(Build.SourcesDirectory)\aspnetfx\ASPNET.WebForms.v4.7.2\ASPNET.WebForms.v4.7.2.sln
      msbuildLocationMethod: version
      msbuildVersion: '15.0'
      configuration: "Release"
      msbuildArguments: /nologo /p:DeployOnBuild=true /p:PublishProfile=FolderProfile2
      clean: 'false'
      maximumCpuCount: 'false'

  - script: |
      echo "copy result to staging"
      xcopy $(Build.SourcesDirectory)\aspnetfx\ASPNET.WebForms.v4.7.2\WebFormsNoAuth\bin\Release\Publish $(Build.ArtifactStagingDirectory) /E
  - task: PublishBuildArtifacts@1

- job: JOB2
  dependsOn: JOB1
  pool:
    vmImage: 'win1803'
  steps:
  - script: |
      echo "hello from vmImage win1803"
      md buildresult
      echo "copy buildresult into build folder"
      xcopy $(Build.ArtifactStagingDirectory) buildresult /E
      echo "begin build docker image"

- job: JOB3
  dependsOn: JOB2
  pool:
    vmImage: 'win1803'
  steps:
  - script: |
      echo "Other job to be run in JOB 3"

Для получения дополнительной информации о многозадачности YAML, она задокументирована здесь: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/multiple-phases?tabs=yaml&view=azure-devops

Чтобы определить порядок выпуска


Просто упорядочите порядок выпуска, обеспечив продолжение этапа выпуска (это называется environment в термине Azure DevOps Pipelines).Обычно визуализация начинается слева направо, которая выглядит как поток.

Например, у вас может быть порядок заказов релизов Dev, SIT, Production.

release order sample

Официальная документация для организации этапа на конвейерах DevOps Azure: https://docs.microsoft.com/en-us/azure/devops/pipelines/release/define-multistage-release-process?view=azure-devops#extend-a-release-pipeline-by-adding-stages

...