2017-01-13 2 views
1

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

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

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

ответ

3

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

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

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

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

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

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/11592954-allow-tfs-build-to-depend-on-multiple-repositories

2

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

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

+0

Чтобы завершить ответ, вы можете иметь «прокси» строить, спровоцированные изменениями во втором хранилище, чье единственное действие является откройте основную сборку, используя API REST (https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#queueabuild) –

+0

@ Джесси, спасибо за ответ. У меня есть NET-обертка для родной библиотеки lib, которая использует более 20 других родных библиотек в качестве зависимостей. Очень неудобно строить их отдельно. И это не решает проблему. Я могу найти способ создания библиотеки с помощью TFS, но это не имеет смысла без автоматической фиксации и соединения рабочих элементов. Не будет никакой разницы с моим текущим сервером сборки за пределами TFS. – Eugene

+0

@Giulio, спасибо за комментарий. Я рассмотрел API REST и не нашел способ добавить ассоциацию сборки. Я мог бы написать серверный плагин с некоторой подпиской на сборку, получить фиксацию, проанализировать ее с помощью внешнего инструмента или библиотеки GIT, но нет возможности связать фиксацию с сборкой. – Eugene

Смежные вопросы