Этап установки TeamCity Nuget не работает с несколькими источниками, одним из которых является частный канал NuGet от TC

Я получаю следующую ошибку в шаге сборки NuGet Install при установке источников на сервер TeamCity NuGet:

Step 1/4: NuGet install (NuGet Installer) (3s)

[15:11:19][Step 1/4] scan: Searching for nuget.config files

[15:11:19][Step 1/4] install: Installing NuGet packages for packages.config (3s)

[15:11:19][install] NuGet command: C:\TeamCity\buildAgent\tools\NuGet.CommandLine.2.2.0.nupkg\tools\NuGet.exe install C:\TeamCity\buildAgent\work\a4b9de5be22a981\packages.config -OutputDirectory C:\TeamCity\buildAgent\work\a4b9de5be22a981\packages -Source http://localhost:9090/guestAuth/app/nuget/v1/FeedService.svc

[15:11:19][install] Starting: C:\TeamCity\buildAgent\temp\agentTmp\custom_script96367186180319830.cmd

[15:11:19][install] in directory: C:\TeamCity\buildAgent\work\a4b9de5be22a981

[15:11:22][install] The remote server returned an error: (404) Not Found.

[15:11:22][install] Process exited with code 1

[15:11:22][Step 1/4] Step NuGet install (NuGet Installer) failed

Если я оставлю поле источников пустым, он найдет пакеты NuGet из канала по умолчанию (канал сообщества NuGet), но не те, которые созданы и упакованы локально и размещены в ленте TC NuGet.

Как вы используете и канал по умолчанию, и внутренний канал NuGet TC на этапе сборки установщика NuGet?

3 ответа

Решение

Вы можете указать пользовательские каналы только для решения с помощью nuget.config файл.

Ключевым моментом является предоставление раздела учетных данных packageSourceCredentials как это:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="Local" value="http://localhost:9090/httpAuth/app/nuget/v1/FeedService.svc" />
  </packageSources>
  <activePackageSource>
    <add key="Local" value="http://localhost:9090/httpAuth/app/nuget/v1/FeedService.svc" />
  </activePackageSource>
  <packageSourceCredentials>
    <Local>
      <Username>login</Username>
      <Password>pa$$w0rd</Password>
    </Local>
  </packageSourceCredentials>
</configuration>

это config файл должен быть рядом с sln файл в хранилище.

Мы реализовали аутентифицированную поддержку каналов в плагине TeamCity. Пожалуйста, следуйте комментариям к проблеме http://youtrack.jetbrains.com/issue/TW-20764

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

nuget sources add -name [name] -source [feedUrl]
nuget sources update -Name [name] -User [username] -pass [password]

Насколько я понимаю, Nuget будет кэшировать эти учетные данные для будущих запросов. Я не знаю, как часто этот кеш очищается; вам может понадобиться запустить это nget sources update прямо перед тем, как вы начнете сборку, чтобы убедиться, что кэш согласован.

Другие вопросы по тегам