Как я могу указать шаг сборки TeamCity NuGet Installer для использования как NuGet.org, так и исходного пакета TeamCity?
У меня возникли проблемы с моим шагом сборки установщика NuGet.
Мы используем как официальные пакеты NuGet.org, так и наши собственные пакеты, размещенные на сервере TeamCity NuGet. Если я оставил исходники пакетов пустыми, тогда будут найдены пакеты с nuget.org, но как только я укажу %teamcity.nuget.feed.server%
в качестве источника пакета, пакеты с nuget.org не будут найдены.
Я попробовал установить Packages Sources для включения обоих, но он по-прежнему не работает для официальных пакетов nuget.org.
https://nuget.org/api/v2/
%teamcity.nuget.feed.server%
Это неправильный URL-адрес для источника пакета nuget.org? Как я могу сказать, что использовать оба источника?
Я спросил об этом на дискуссионной панели разработчиков JetBrains, но не получил никаких ответов.
Ответы
Ответ 1
По-видимому, шаг сборки установщика NuGet даже не нужен. Я отредактировал файл .nuget/NuGet.targets
, чтобы включить оба пути, и удалил шаг сборки NuGet Installer, и теперь он работает.
При первоначальной настройке TeamCity для этого решения он не работал без шага установки NuGet, поэтому я не знаю, что еще я сделал по-другому, чтобы сделать эту работу, но, возможно, файл NuGet.targets был ключ все время.
Комментарий этого сообщения в блоге указал мне в правильном направлении.
Ответ 2
Если бы такая же проблема, достаточно смешно, мои источники Nuget были указаны как
https://www.nuget.org/api/v2/
http://nugetserver/nuget
Добавление косой черты во втором URL-адресе, чтобы сделать ее http://mynugetserver/nuget/
исправленной проблемой.
Понадобился время, чтобы разобраться. Теперь мой шаг сборки Nuget-installer работает нормально.
Ответ 3
Вы можете изменить NuGet.Config в локальной папке AppData для пользователя, которому работает TeamCity, и не изменять каждый файл проекта .targets:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<!--<add key="repositoryPath" value="J:\TeamCity7\buildAgent\work\my_shared_packages_dir" />-->
</config>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
<packageSources>
<add key="NuGet official package source" value="https://nuget.org/api/v2/" />
<add key="MMG TeamCity Nuget Server" value="http://myteamcityserver/guestAuth/app/nuget/v1/FeedService.svc" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
NuGet.exe внутри папки .nuget в каждом проекте будет уважать установленные здесь конфигурации, а затем применять любые "переопределения", выполненные в файле .targets.
Ответ 4
Такая же проблема. Я использую TeamCity v10, требуется шаг Nuget (в моем решении нет файла .targets). Тем не менее, я использовал другой подход, чтобы добавить "дополнительный" источник пакета:
c:\BuildAgent\tools\NuGet.CommandLine.2.7.0\tools\Nuget.exe sources Add -Name TeamCity-feed -Source http://myteamcityserver/guestAuth/app/nuget/v1/FeedService.svc/
После этого я добавил шаг установщика Nuget и ничего не указывал в исходном поле пакета в TeamCity, теперь оба пакета из открытого канала nuget.org и мой внутренний канал могут быть восстановлены без проблем.