Сборка TFS с несколькими репозиториями GIT

Похоже, TFS поддерживает только один репозиторий для каждой сборки. Мне этого недостаточно, так как мне нужно использовать некоторые сторонние библиотеки, хранящиеся отдельно.

Я могу использовать для этого подмодуль GIT, но в этом случае сборка не будет связана с коммитами и рабочими элементами, потому что она игнорирует коммиты из подмодулей. Кроме того, изменение в подмодуле не вызовет сборки.

Можно ли определить сборку с несколькими репозиториями, используя плагины, расширения или что-то в этом роде?


person Eugene    schedule 13.01.2017    source источник


Ответы (2)


Как упомянул @jessehouwing, по умолчанию невозможно создать несколько репозиториев GIT. @jessehouwing и @Giulio Vian предоставили здесь некоторые обходные пути:

  1. Используйте Nuget или другой диспетчер пакетов для хранения сторонних библиотек и добавьте задачу восстановления NuGet для восстановления библиотек.

  2. Добавьте задачу командной строки для вызова git.exe для извлечения дополнительных репозиториев.

  3. Создайте два определения сборки, во второе определение сборки вам нужно добавить задачу powershell. В сценарии powershell вы можете использовать REST API TFS для постановки в очередь первого определения сборки.

Но ни один из них не будет связывать коммиты и рабочие элементы в двух репозиториях с одной сборкой. Я обнаружил, что на веб-сайте ниже уже есть UserVoice, вы можете проголосовать за него:

https://developercommunity.visualstudio.com/idea/365522/allow-tfs-build-to-depend-on-multiple-repositories.html

person Cece Dong - MSFT    schedule 16.01.2017

Нет, в настоящее время это невозможно. Вместо этого рекомендуется создавать и хранить сторонние библиотеки в функции управления пакетами (в виде пакета NuGet или npm) и использовать зависимость от пакета, а не от источника. Однако это не будет связывать рабочие элементы со сторонними зависимостями.

Конечно, если вы действительно этого хотите, вы можете вызвать git.exe из PowerShell или пакетного сценария и получить дополнительные репозитории. Это также не будет связывать рабочие элементы.

person jessehouwing    schedule 13.01.2017
comment
Чтобы завершить ответ, у вас может быть сборка «прокси», запускаемая изменениями во втором репозитории, единственным действием которого является запуск основной сборки с использованием REST API (visualstudio.com/en-us/docs/integrate/api/build/) - person Giulio Vian; 13.01.2017
comment
@ Джесси, спасибо за ответ. У меня есть оболочка NET для нативной библиотеки, которая использует более 20 других нативных библиотек в качестве зависимостей. Очень неудобно строить их все по отдельности. И это не решает проблему. Я могу найти способ собрать библиотеку с помощью TFS, но это не имеет смысла без автоматической фиксации и сопоставления рабочих элементов. Не будет никакой разницы с моим текущим сервером сборки за пределами TFS. - person Eugene; 16.01.2017
comment
@ Джулио, спасибо за комментарий. Я просмотрел REST API и не нашел способа добавить ассоциацию сборки. Я мог бы написать серверный плагин с некоторой подпиской на сборку, получить коммит, проанализировать его с помощью внешнего инструмента или библиотеки GIT, но нет возможности связать коммит со сборкой. - person Eugene; 16.01.2017