Быстрая сборка с сервером / агентом сборки TFS и GIT monorepo - PullRequest
0 голосов
/ 24 октября 2019

Мы думаем о том, чтобы объединить наши текущие командные проекты TFVC в один GIT-монорэпо.

Ни один из аргументов за или против monorepos не был очень убедительным. У нас сейчас проблемы со связыванием различных командных проектов в TFVC, поэтому мы считаем монорепо. Мы рассматриваем GIT, поскольку TFVC имеет серьезные проблемы с объединением и обнаружением перемещений файлов. Это, кажется, на 10-20 лет позади того, что должно быть возможно, даже когда я прямо говорю IDE Visual Studio, что это перемещение, а не удаление / добавление.

Мне интересно узнать о скорости сборки при использовании monorepo.

Является ли агент сборки достаточно умным, чтобы

  • получать только то, что ему нужно (папки / файлы)
  • не получать историю

тем самым ускоряя процесс?

Или, как правило, клонируется весь репозиторий, я должен был бы делать любые этапы сборки, такие как создание версий сборки после сборки, только обновлять новую сборку, а также для хорошей меры(всегда оставались поверх файлов для TFVC) удалять исходные файлы на агенте сборки один раз в неделю?

А по поводу нескольких определений сборки: должно ли каждое определение сборки иметь свой собственный клон репозитория? Всего будет около 5 сборок, совершенно разные решения, а также разные ветви основного решения.

Дополнительная информация: команда небольшая (мы не Google), весь размер репо составляет ~ 1-2 ГБ. Сейчас мы находимся на TFS 2017, и у нас нет планов по обновлению.

1 Ответ

1 голос
/ 25 октября 2019

only get what it needs (folders/files) На данный момент невозможно указать часть файлов, которые будут загружены во время шага Получить исходный код. В отличие от использования сопоставления, это, по-видимому, доступно только при использовании TFVC.

Начиная с Gitполагается на состояние полного хранилища (коммит - указатель на состояние рабочей папки, которая включает все файлы в этом состоянии), невозможно просто получить некоторые файлы или папки в репо.

Однако, чтобы ускорить процесс сборки, вместо этого каждый раз получайте полное git-репо. Вы можете установить clean = false и проверить выборку теней, чтобы получать только измененные файлы во время процесса сборки.

Shallow Fetch: Позволяет загрузить только последний снимок хранилища. Будет загружаться намного быстрее, но может вызвать сбой таких инструментов, как GitVersion (для расчета номера версии он опирается на данные истории.

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

Ссылка на источник: Как получить измененные файлы отдельно в TFS Build (Git)

Для получения более подробной информации вы также можете взглянуть на часть исходного кода Azure DevOps Git в нашем официальном документе.

Кроме того, если ваш репозиторийслишком большой или содержит слишком много двоичных файлов. Подумайте о том, чтобы разбить его на более мелкие репозитории или, если в нем много двоичных файлов, используйте Git-LFS для двоичных файлов.

...