Как создать определение сборки в "Visual Studio Team Services", использующее исходные коды из нескольких "Team Projects"?
Мне нравится использовать VSTS ("визуальный сервис команды студии"), но у меня есть большая проблема.
По сути, у меня есть несколько решений для библиотек классов (например, ClassLibrary1, ClassLibrary2), которые я использую в качестве ссылки в других своих проектах (например, websiteSolution1, websiteSolution2, websiteSolution3.)
Конечно, мне нравится иметь отдельное git-репо (командный проект в VSTS) для каждого решения, скажем, "групповые проекты" имеют то же имя, что и решение, которое они содержат.
Теперь мне нравится создавать некоторые определения сборки с помощью следующих правил:
если кто-то фиксирует какое-либо изменение в одном из "групповых проектов" библиотеки классов (например, ClassLibrary1), то сначала мы создаем это решение classLibrary и используем результат (файл DLL), чтобы передать его в решения для веб-сайтов (например, websiteSolution1, websiteSolution2, websiteSolution3.) и наконец, создать веб-решения (которые находятся в другом командном проекте, но с одной учетной записью)
если кто-то фиксирует какое-либо изменение в одном из решений для веб-сайтов (например, websiteSolution1), то сначала мы создаем каждую библиотеку "командных проектов" классов (например, ClassLibrary1, ClassLibrary2) и используем результат (файл DLL) для передачи его в решения веб-сайтов, которые имеют фиксацию (например websiteSolution1,) и, наконец, создайте веб-решение (которое находится в другом командном проекте, но с одним и тем же аккаунтом)
Проблема: когда я создаю новое "определение сборки", я вижу только коды в том же командном проекте, который содержит определение сборки.
1 ответ
Несколько репозиториев для VSTS git build не поддерживаются. (Мы можем отобразить несколько источников, если мы используем TFVC)
Есть связанный голос пользователя, что вы можете проголосовать за него.
Обходной путь:
Вы можете получить дополнительные файлы в другом хранилище с помощью команды git (шаг построения командной строки, и вам нужно установить флажок Разрешить сценариям доступ к OAuth-токену в теге Option в определении сборки).
1. если кто-то фиксирует какое-либо изменение в одном из "групповых проектов" библиотеки классов (например, ClassLibrary1), то сначала мы создаем это решение classLibrary и используем результат (файл DLL), чтобы подать его в решения для веб-сайтов (например, websiteSolution1, websiteSolution2, websiteSolution3).) и, наконец, создать веб-решения (которые находятся в другом командном проекте, но с одним аккаунтом)
шаги:
- Создайте новое определение сборки для библиотечного проекта / решения.
- Добавьте шаг сборки PowerShell, чтобы вызвать REST API сборки, чтобы поставить в очередь сборку вашего веб-сайта (см. Код в этой статье)
- Установите флажок "Непрерывная интеграция" (CI) и установите фильтры ветвей на вкладке "Триггеры" этого определения сборки.
2. если кто-то фиксирует какое-либо изменение в одном из решений для веб-сайтов (например, websiteSolution1), то сначала мы создаем каждую библиотеку "групповых проектов" (например, ClassLibrary1, ClassLibrary2) и используем результат (файл DLL) для подачи его в решения для веб-сайтов, которые имеют зафиксировать (например, websiteSolution1,) и, наконец, создать веб-решение (которое находится в другом командном проекте, но с одним и тем же аккаунтом)
шаги:
- Создайте определение сборки для решения WebSites.
- Добавьте шаг сборки командной строки в команду "Запустить git", чтобы получить файлы библиотек классов в другом хранилище (см. Предыдущий снимок экрана)
- Добавьте шаг Visual Studio Build для создания библиотечного проекта / решения.
- Добавьте шаг "Копировать файлы", чтобы скопировать файл результатов сборки (например, файлы.dll) в нужную папку по соответствующему пути ссылки на classlibray проекта веб-сайта. Вы можете проверить это в файле проекта,
например:
<Reference Include="ClassLibraryB">
<HintPath>..\..\MSBuildDemoSolution1\ClassLibrary1\Lib\ClassLibraryB.dll</HintPath>
</Reference>
- Добавьте шаг Visual Studio Build для создания проекта / решения веб-сайта.