AzureDevOps Выпуск конвейера с несколькими артефактами - PullRequest
5 голосов
/ 17 апреля 2019

Возможно ли иметь один конвейер выпуска с несколькими артефактами, который будет условно запускать отдельные этапы.

Пример:

(Build Artifact 1) Создание тегов Web

(Build Artifact 2) Создание тегов из Identity

Когда я настраиваю свой конвейер выпуска, я создаю один конвейер и добавляю

(Build Artifact 1) -> Web Stage

(Build Artifact 2) -> Identity Stage

оба этих артефакта устанавливаются автоматически, активируя релиз и устанавливая на After Release

У меня проблема в том, что когда я ставлю сборку в очередь на (Build Artifact 2), развернутся оба этапа. И я только хочу Identity Stage развернуть и наоборот.

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

1 Ответ

2 голосов
/ 18 апреля 2019

Если больше подумать о вашей ситуации, возможно, было бы чище (читай: нет неудачных этапов) иметь третий артефакт, создающий CI, который срабатывает при завершении сборки двух других сборок CI.Эта промежуточная сборка будет помечена в соответствии с тем, почему она была запущена (т. Е. Web или Identity).Артефактом этой сборки будет переупаковка вышестоящего артефакта (используйте задачу артефакта загрузки), что позволит вашему конвейеру выпуска использовать один артефакт, который может иметь 2 разных значения тега.Это дает вашим фильтрам артефактов в предварительных условиях больше зубов.

Web_CI                            
    \                             #Web - - Web Development - - Web Production
     - -\                        /
         > = WebIdSwitch_CI - - <
     - -/                        \
    /                             #Id - - Id Development - - Id Production
Id_CI


Оригинальный ответ

Я могу ошибаться, но я думаю, что выВам нужно будет запустить этапы на основе значения в RELEASE_TRIGGERINGARTIFACT_ALIAS.

. Возможно, есть несколько способов сделать это, например,

  1. , имеющий буферный этапдля каждого артефакта после выпуска и разрешения их сбоя, если значение неверно (перемещение рабочей стадии для выполнения после его буфера)
  2. выполнить проверку в задании с новой первой задачей и завершить с ошибкой
  3. написать условную опцию выполнения для каждой задачи, чтобы убедиться, что ни одно из них не выполнится, если инициирующий артефакт неверен

Доступ к переменной можно получить в конвейере с помощью $(Release.TriggeringArtifact.Alias) или вpowershell с $env:RELEASE_TRIGGERINGARTIFACT_ALIAS.

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

...