Очистить все каталоги сборки в настройках Azure DevOps Pipeline не работает при использовании конфигурации YAML
Я использую Azure DevOps в течение некоторого времени и всегда использую графический интерфейс классического редактора при создании конвейера сборки. Теперь я пытаюсь создать новый конвейер с помощью YAML. Все прошло хорошо, и сборка прошла успешно. Но я заметил другое поведение в задаче оформления заказа по сравнению с конвейером с использованием классического редактора. В обоих конвейерах настройки, используемые на вкладке "Получить источники", одинаковы (см. Снимок экрана ниже).
В случае конвейера классического редактора задача оформления заказа Удаляет и воссоздает $(Agent.BuildDirectory).
Это приводит к инициализации нового локального репозитория Git для каждой сборки. Но для конвейера YAML задача оформления заказа выполняет толькоgit clean -ffdx
и удаление только исходных каталогов. Как решить эту проблему для конвейеров YAML?
Журнал конвейера YAML:
Журнал конвейера классического редактора:
3 ответа
Установка параметра очистки всех каталогов сборки (на скриншоте ниже) в пользовательском интерфейсе DevOps не работает в случае сборок YAML.
Но вы можете указать это в самом файле YAML, используя настройку рабочей области задания. Это работает, как ожидалось.
jobs:
- job: Job1
workspace:
clean: all # what to clean up before the job runs - outputs | resources | all
Это действительно странно, потому что у меня есть это (в сборке YAML)
Я нашел это в документации:
Если для clean установлено значение true, конвейер сборки выполняет отмену любых изменений в
$(Build.SourcesDirectory)
. Более конкретно, следующие команды Git выполняются до выборки источника.
git clean -ffdx
git reset --hard HEAD
У вас включена опция очистки?
Это будет работать ТОЛЬКО если вы добавите эту задачу в файл YAML, где определен ваш конвейер:
- task: PostBuildCleanup@3
Если эта задача добавлена, а для параметра «Очистить» на вкладке «Получить исходные коды» установлено значение false -> она удалит $(Agent.BuildDirectory) (не только каталог sourcec, который обычно является каталогом «s», но и каталог артефактов «a» и двоичный файл. "Б" тоже реж.)
На вкладке «Получить источники» вы можете точно настроить, что удалять, установив для параметра «Очистить» значение «истина» и выбрав один из доступных вариантов (каталог источников, каталог источников и двоичный каталог, все каталоги...).
Если ваша сборка использует репозиторий Git, минимальная часть папки .git останется на диске. Эти оставшиеся файлы необходимы для встроенной функции очистки после задания агента сборки.