Как мне указать на этапе сборки NuGet Installer TeamCity использовать как NuGet.org, так и источник пакетов, предоставленный TeamCity?

У меня проблемы с этапом сборки установщика NuGet.

Мы используем как официальные пакеты NuGet.org, так и наши собственные пакеты, размещенные на сервере NuGet TeamCity. Если я оставлю поле «Источники пакетов» пустым, будут найдены пакеты с nuget.org, но как только я укажу %teamcity.nuget.feed.server% в качестве источника пакета, пакеты с nuget.org не будут найдены.

Я попытался настроить источники пакетов, чтобы включить оба, но он по-прежнему не работает для официальных пакетов nuget.org.

https://nuget.org/api/v2/
%teamcity.nuget.feed.server%

Разве это не правильный URL-адрес источника пакета nuget.org? Как мне сказать ему использовать оба источника?

Я спросил об этом на доске обсуждений для разработчиков JetBrains, но не получил никаких ответов.


person CoderDennis    schedule 15.10.2012    source источник


Ответы (4)


Была такая же проблема, довольно забавно, что мои источники Nuget были указаны как
https://www.nuget.org/api/v2/
http://nugetserver/nuget
Добавление косой черты на втором URL-адресе, чтобы http://mynugetserver/nuget/ устранило проблему. Мне потребовалось время, чтобы понять. Теперь мой этап сборки Nuget-installer работает нормально.

person Edmund    schedule 27.10.2013

По-видимому, этап сборки установщика NuGet даже не нужен. Я отредактировал файл .nuget/NuGet.targets, включив оба пути, и удалил этап сборки NuGet Installer, и теперь он работает.

При первоначальной настройке TeamCity для этого решения он не работал без шага установщика NuGet, поэтому я не знаю, что еще я сделал по-другому, чтобы это работало, но, возможно, файл NuGet.targets был ключевым все время .

Комментарий к этому сообщению в блоге указал меня в правильном направлении.

person CoderDennis    schedule 15.10.2012
comment
Работает ли этот обходной путь с личным фидом TC? Я получаю сообщение об ошибке на этапе msbuild о том, что он не может запрашивать учетные данные в неинтерактивном сеансе. Я пытаюсь найти решение, используя приватную ленту, может быть, вы можете помочь? - person mare; 02.01.2013
comment
Я не пробовал настраивать частный канал, поэтому не знаю, сработает ли это для этого сценария. - person CoderDennis; 02.01.2013
comment
Да, мне тоже пришлось это сделать. Вот пример: <ItemGroup Condition=" '$(PackageSources)' == '' "> <PackageSource Include="https://nuget.org/api/v2/" /> <PackageSource Include="http://exampleprivatefeed/" /> </ItemGroup> - person absynce; 22.03.2013
comment
Я считаю, что вам не нужен шаг установщика NuGet, ЕСЛИ вы хотите получить только текущие версии пакетов, установленные в проектах. Если вы хотите сначала обновить те пакеты, которые указаны в packages.config, вам необходимо сначала запустить шаг установщика NuGet перед сборкой, чтобы получить обновления на основе настроек шага установщика Nuget для обновления. В наш файл nuget.targets я добавил наш собственный внутренний сервер nuget, поэтому текущие пакеты удаляются, отлично работает, но не получает обновлений, поэтому шаг установщика Nuget. Звучит разумно или нелепо? - person ; 10.04.2013

Вы можете изменить 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.

person diegohb    schedule 22.06.2013
comment
Вы можете сделать то же самое, используя команду добавления источников NuGet на сервере, работая от имени этого пользователя. - person Johann Strydom; 08.09.2016

Здесь та же проблема. Я использую 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 и мой внутренний канал могут быть восстановлены без проблем.

person Emil G    schedule 01.12.2016