В настоящее время у меня есть выпуск, предназначенный для отправки клиентов на внутренний сервер nuget.
Каждый выпуск идентичен с точки зрения шагов, единственное, что изменяется, - это артефакт срабатывания.
Однако, когда я добавляю еще один артефакт в «общий» выпуск, так что теперь в выпуске есть артефакты ClientA и ClientB, оба артефакта загружаются при запуске выпуска, а затем они оба отправляются.
Я хотел бы знать, возможно ли, чтобы выпуск Только загружал артефакт запуска.
Пример:
Релиз запускается как на ClientA, так и на ClientB.
Выпущен ClientB. Триггеры сборки и только артефакт ClientB используется во время развертывания.
@ EddieChen-MSFT Да, из двух отдельных сборок CI. ClientA.CI и ClientB.CI
есть задача выпуска Download build artifacts от MS, но я не могу заставить ее работать для нескольких артефактов в выпуске docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utilit y /…





Я не думаю, что на данный момент это возможно, но что-то подобное возможно.
Создайте группу задач из определения текущего выпуска, как описано здесь: https://docs.microsoft.com/en-us/vsts/pipelines/library/task-groups?view=vsts
Клонируйте определение выпуска и измените артефакт с ClientA на ClientB.
В итоге у вас будет два определения выпуска, в каждом из которых будут общие шаги, но артефакты будут разными.
Обновлено: сценарий PowerShell для загрузки артефактов сборки
Эдди предложил хороший обходной путь. Вот как вы можете снять артефакт вручную.
Нужно включить Разрешить скриптам доступ к токену OAuth
Добавьте задачу PowerShell на каждую фазу и укажите ссылку на сценарий СкачатьBuildArtifacts.ps1.
Если выпуск запускается артефактами сборки, значение предопределенной переменной «$ (RELEASE.TRIGGERINGARTIFACT.ALIAS)» будет псевдонимом сработавших артефактов. Вы можете получить значение этой переменной, чтобы определить, какой артефакт запускает выпуск.
Спасибо, Данижел, но я надеялся избежать множественных определений релизов.
Я обновил решение ссылкой на скрипт PowerShell. Возможно, вам придется адаптировать его к вашим потребностям, но он должен дать вам фору.
было бы полезно добавить if ($artifact.Alias -eq $env:RELEASE_TRIGGERINGARTIFACT_ALIAS) {, чтобы ответить на первоначальный вопрос и загрузить единственный артефакт, который вызвал выпуск
Нет никакого способа добиться этого из коробки. Но вы можете отключить артефакты автоматической загрузки и добавить сценарий PowerShell в определение выпуска, чтобы получить сработавший артефакт и загрузить его.
Любое указание на то, как может выглядеть этот сценарий PowerShell / где я могу найти документацию о том, как загрузить артефакт и передать его следующей части процесса сборки?
Не используйте задачу PowerShell. Просто используйте [настраиваемое условие] [docs.microsoft.com/en-us/azure/devops/pipelines/p rocess /…, чтобы оценить значение $(Release.TriggeringArtifact.Alias).
Невозможно просто загрузить сработавшие артефакты, но вы можете определить, какой артефакт запускает этот выпуск, с помощью переменной RELEASE_TRIGGERINGARTIFACT_ALIAS.
Таким образом, вы можете нажать соответствующую переменную для этой переменной.
Это действительно может помочь. Недавно я заметил новый значок на артефакте срабатывания, так что это может помочь.
Все они строят артефакты?