Очистить все каталоги сборки в настройках 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 останется на диске. Эти оставшиеся файлы необходимы для встроенной функции очистки после задания агента сборки.

Другие вопросы по тегам