Если больше подумать о вашей ситуации, возможно, было бы чище (читай: нет неудачных этапов) иметь третий артефакт, создающий CI, который срабатывает при завершении сборки двух других сборок CI.Эта промежуточная сборка будет помечена в соответствии с тем, почему она была запущена (т. Е. Web
или Identity
).Артефактом этой сборки будет переупаковка вышестоящего артефакта (используйте задачу артефакта загрузки), что позволит вашему конвейеру выпуска использовать один артефакт, который может иметь 2 разных значения тега.Это дает вашим фильтрам артефактов в предварительных условиях больше зубов.
Web_CI
\ #Web - - Web Development - - Web Production
- -\ /
> = WebIdSwitch_CI - - <
- -/ \
/ #Id - - Id Development - - Id Production
Id_CI
Оригинальный ответ
Я могу ошибаться, но я думаю, что выВам нужно будет запустить этапы на основе значения в RELEASE_TRIGGERINGARTIFACT_ALIAS
.
. Возможно, есть несколько способов сделать это, например,
- , имеющий буферный этапдля каждого артефакта после выпуска и разрешения их сбоя, если значение неверно (перемещение рабочей стадии для выполнения после его буфера)
- выполнить проверку в задании с новой первой задачей и завершить с ошибкой
- написать условную опцию выполнения для каждой задачи, чтобы убедиться, что ни одно из них не выполнится, если инициирующий артефакт неверен
Доступ к переменной можно получить в конвейере с помощью $(Release.TriggeringArtifact.Alias)
или вpowershell с $env:RELEASE_TRIGGERINGARTIFACT_ALIAS
.
Я не уверен, используете ли вы Фильтры артефактов на своих этапах уже как часть условий перед развертыванием, но это может быть другой способ, который не так уж и сложен.взломатьМне придется собрать тестовый конвейер вместе и попробовать его.