Azure DevOps Pull-Request: дополнительные коммиты в существующем триггере Pull-Request перестраиваются, игнорируя фильтр пути в политике сборки.

Я создал политику сборки для запуска конвейера CI, если часть кодовой базы была изменена. Я хочу исключить файлы из повторного запуска сборки.

Фильтр пути включает все, но исключает файл README.md

При создании pull-реквеста с изменениями в файле README.md сборка не запускается (как и ожидалось).

При создании pull-реквеста с изменениями в других файлах запускалась сборка (как и ожидалось)

При создании запроса на вытягивание с изменением в другом файле сборка запускается, но когда я фиксирую изменение в файле README.md, текущая сборка не выполняется и начинается новая сборка. (не ожидалось, я ожидаю, что фильтр пути предотвратит перестройку, потому что файл должен игнорироваться для этой сборки)

Похоже, фильтр пути к политике сборки работает только при создании запроса на вытягивание.

Есть ли способ зафиксировать файлы в существующем запросе на вытягивание без запуска перестройки?


person Marco Amersfoort    schedule 12.05.2020    source источник
comment
Пытаюсь понять: вы нажимаете фиксацию файла по этому пути игнорирования в исходной ветке, и сборка запускается снова?   -  person mugabits    schedule 13.05.2020
comment
@ jmuz3 Да, именно так   -  person Marco Amersfoort    schedule 14.05.2020


Ответы (2)


По вашему описанию я смог воспроизвести эту ситуацию.

Вот билет по поводу объяснения этой ситуации.

Есть ли способ зафиксировать файлы в существующем запросе на вытягивание без запуска перестройки?

Вы можете сослаться на обходной путь в заявке выше.

Другой обходной путь: вы можете попробовать установить «Триггер» как «Вручную» в «Проверка сборки».

В этом случае вы можете вручную поставить очередь сборки в Pull Request.

Когда в исходную ветку отправляется новая фиксация, текущая сборка может продолжать работать без прямого сбоя.

Надеюсь это поможет.

person Kevin Lu-MSFT    schedule 13.05.2020
comment
Спасибо, объяснение, почему это не поддерживается в заявке, полезно, и это крайний случай, который они не хотят поддерживать. Установка триггера на ручной решит эту проблему, но я предпочитаю оставить триггер установленным на автоматический, потому что он отлично подходит для 95% наших запросов на вытягивание без этой проблемы. - person Marco Amersfoort; 14.05.2020
comment
Этот комментарий из тикета также полезен: на самом деле я смог обойти его, используя сборку CI. Теперь сборки PR не создают фиксации; после завершения PR сборка CI создает фиксацию и автозаполнение PR в ветке. Еще раз спасибо, что нашли время ответить. - person Marco Amersfoort; 14.05.2020

Я не смог решить проблему с пересборкой на новый коммит.

Однако я смог решить нашу конкретную проблему. В нашем конвейере есть этап, который генерирует файлы и фиксирует их, что запускает перестройку. Я добавил шаг, который проверяет, добавлены ли уже файлы, и пропускает повторную фиксацию сгенерированного файла.

Чтобы проверить, существует ли уже файл в запросе на перенос, я использую следующую команду:

git diff origin/master -- {filename} --exit-code --shortstat

person Marco Amersfoort    schedule 14.05.2020
comment
Привет, @Marco Amersfoort. Очень признателен за этот отзыв! Вы можете принять ответ, чтобы другие могли напрямую узнать, что это полезно. . - person Kevin Lu-MSFT; 25.05.2020