Почему эти артефакты не доступны для конвейера выпуска прямо из того места, где они были построены?
Согласен с Дэниелом.
Основная причина для меня в том, что мы не можем постоянно держать размещенного агента. Поскольку MS хочет эффективно защищать ресурсы, она не занята в течение длительного времени.
Когда мы ставим в очередь сборку, MS назначит нам совершенно новый чистый агент для выполнения нашей задачи, и после завершения сборки MS вернет агент, назначенный нашей сборке, и восстановит агент до его первоначального состояния. готовится к принятию назначения следующей задачи.
Итак, мы не можем удерживать размещенный агент для его использования в следующем конвейере выпуска. Мы должны хранить артефакты в облаке / на сервере, затем мы можем загрузить их в конвейер выпуска. В противном случае мы не смогли бы получить необходимый артефакт от агента, который был восстановлен.
Кроме того, MS случайно назначен агенту, и мы не можем гарантировать, что один и тот же агент будет выделен и собран во время выпуска. pipe.
Это основная причина, по которой нам нужно копировать или публиковать артефакты.
Если вы не хотите копировать или публиковать артефакты, вы можете настроить свой собственный частный агент ине очищайте агент перед запуском конвейера деблокирования.
Обновление:
Почему пользователь, конечно же, потрудился найти место для артефактоввручную? Я ожидал, что каждый конвейер сборки будет иметь личное пространство для хранения последних артефактов сборки. Пространство, в которое AzO DevOps автоматически копирует артефакты сборки. Мне кажется, что вещи должны быть скопированы вручную из A в B, а затем из B в C.
Это потому, что нужны не все выходные данные, например, тестовый проект, что нам нужноявляется результатом теста / охватом кода для тестового проекта, а не выходом для решения. В этом случае нам не нужно копировать выходные данные в артефакты. С другой стороны, нам нужно скопировать некоторые специальные файлы в artfacts, а затем автоматически скопировать артефакты сборки, которые не будут соответствовать вашим требованиям.
Это также причина, по которой мы предоставляем задачу копирования файлов в артефакты, поэтомучто мы могли бы настроить наши потребности личности.
Конечно, если вы считаете, что ручное копирование является излишним, вы можете использовать параметр MSBuild /p:output=$(build.artifactstagingdirectory)
, чтобы установить выходные данные непосредственно для артефактов.
Если мне нужно что-то скопироватьот A до B в конвейере Build, что может помешать мне сразу же скопировать его в C? Тогда отдельный конвейер Release будет, ну, скорее, необязательным, если не избыточным.
Если вы находитесь в конвейере сборки, есть еще одна задача Загрузка артефактов сборки , которая можетскачать артефакты сборки.
Если вы находитесь в конвейере релиза, вам просто нужно выбрать артефакты сборки в качестве источника, конвейер релиза автоматически загрузит этот артефакт:
Проверьте этот документ для более подробной информации.
Надеюсь, это поможет.