¿Cómo agregar el feed nuget personalizado a TeamCity build?


He creado un servidor Nuget usando Teamcity (que se ejecuta en una máquina virtual en Internet) y he creado la compilación que publica un paquete en ella.

También tengo otro proyecto que necesita usar ese paquete. Este proyecto también se basa en teamcity. En mi Visual Studio local agregué el uri de alimentación nuget, instalé el paquete y todo funciona bien. Pero cuando intento construirlo en teamcity dice que "Paquete no encontrado".

Así que mi pregunta es :" Cómo agregar la costumbre nuget feed to TeamCity build?"

Author: Eugene, 2013-01-27

4 answers

Los orígenes del paquete NuGet se configuran a través de Visual Studio, pero se almacenan en un archivo de configuración por usuario, que se encuentra en c:\Users\$USER\AppData\Roaming\NuGet\NuGet.config. La entrada para el origen del paquete de TeamCity debe agregarse al archivo de configuración del usuario del agente de compilación que está ejecutando sus compilaciones.

  1. En su máquina local, abra el Nuget.archivo de configuración para su usuario
  2. Copie la entrada para el origen del paquete TeamCity al portapapeles
  3. En el agente de compilación, abra el NuGet.archivo de configuración para el usuario eso es ejecutar tus compilaciones de TeamCity
  4. Pegue en la entrada de origen del paquete TeamCity. Guardar y salir.
  5. Ejecute la compilación de nuevo. Ahora debería ser capaz de encontrar el paquete.

EDIT: ladenedge documenta una buena solución que no existía cuando originalmente respondí a esta pregunta. La solución es especialmente útil si no tiene acceso de administrador al agente de compilación o si desea configurar fuentes de paquetes por proyecto.

 41
Author: John Hoerr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-02 16:59:40

NuGet ahora puede leer las fuentes del archivo NuGet.targets almacenado con la fuente misma como se explica en la respuesta a una pregunta duplicada.

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
    <!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
    <PackageSource Include="https://nuget.org/api/v2/" />
    <PackageSource Include="https://my-nuget-source/nuget/" />
</ItemGroup>
 25
Author: ladenedge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:17

No quería añadir feed en NuGet.config en el código fuente ya que es parte de la infraestructura de compilación y no parte del código de la aplicación.

Tampoco quería añadir feed en NuGet.config en los agentes de compilación de TeamCity, ya que es difícil de mantener (actualizar, agregar, eliminar), además tenemos muchos agentes de compilación.

Lo que funcionó mejor para mí - agregar %system.PackageSources % en TeamCity (en el proyecto Raíz) que contiene tanto la fuente nuget global como mi personalizado (separados por punto y coma):

Https://www.nuget.org/api/v2/; http: / / : 81 / guestAuth/app/nuget/v1 / FeedService.vpc

Si nos fijamos en NuGet.Targets, verás que usa Pack(PackageSources) si está definido. Así que lo defines como parámetro "system" en TeamCity y se pasa al proceso de compilación.

 15
Author: Ivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-10 13:22:07

En mi caso, el archivo DLL se guarda aquí: C:\Users\user_account\.nuget\packages\package-name\package_version\lib\netcoreapp1.0\assembly_name.dll

 0
Author: Hasan A Yousef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-18 13:31:46