2012-12-31 11 views
8

ricevo il seguente errore nel NuGet Installare passaggio di generazione quando si imposta fonti al server NuGet di TeamCity:TeamCity Nuget installare passaggio di generazione non si lavora con più fonti, uno di loro NuGet privata del TC alimentano

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 

Se lascio fonti campo vuoto, troverà i pacchetti NuGet dal feed predefinito (feed della community NuGet) ma non quelli che sono compilati e pacchettizzati localmente e ospitati all'interno del feed NuGet di TC.

Come utilizzare sia il feed predefinito che il feed NuGet del TC interno all'interno della fase di creazione del programma di installazione NuGet?

+0

Hai provato a inserire sia l'URL del feed di Team City NuGet sia l'url del feed NuGet standard nella fase di creazione come origini del pacchetto? La riga di comando NuGet.exe ha l'aspetto di utilizzare solo un'origine del pacchetto. Vorrei anche controllare che l'URL del feed NuGet di Team City sia corretto e che l'autenticazione guest sia attiva poiché non penso che debba restituire un 404. NuGet.exe dovrebbe restituire un messaggio che indica che il pacchetto non è stato trovato e non un 404. –

+0

The 404 succede perché quando si utilizza% teamcity.nuget.feed.server% nel campo Fonti del pacchetto questo viene tradotto nel feed NuGet del TC guest (senza autorizzazione) (che è qualcosa come http: // localhost: 9090/guestAuth/app/nuget/v1/FeedService.svc). Tuttavia, ho disattivato il feed pubblico. Questo è il motivo per cui 404. Ho pensato di uscire solo ora. Sto ancora facendo ricerche su come farlo con i feed privati ​​e sono ancora alla ricerca di una soluzione. – mare

+0

Ecco un problema simile che mi ha indirizzato nella giusta direzione, tuttavia non funziona per il feed TC NuGet privato: http://stackoverflow.com/questions/12897747/how-should-i-tell-teamcitys-nuget-installer- build-step-to-use-both-nuget-org-an – mare

risposta

15

È possibile specificare feed personalizzati solo per la soluzione tramite il file nuget.config.

Il punto chiave è quello di fornire le credenziali sezione packageSourceCredentials come questo:

<?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> 

Questo file config dovrebbe essere accanto al file sln nel repository.

+1

Questa soluzione è decisamente semplice ma lascia il controllo del codice sorgente della password del repository. Questo è generalmente considerato un [rischio per la sicurezza] (http://stackoverflow.com/questions/559611/password-storage-in-source-control). –

+0

Questa soluzione ha funzionato anche se le credenziali non sono fornite ei pacchetti sono in un repository di rete. – Shriroop

3

Questo sembra essere un known issue per TeamCity. La soluzione suggerisce di aggiungere l'origine del pacchetto tramite il client a riga di comando e quindi aggiornare tali fonti con le credenziali di autorizzazione:

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

E 'la mia comprensione che Nuget memorizza nella cache le credenziali per richieste future. Non so quanto spesso quella cache è cancellata; potrebbe essere necessario eseguire lo nget sources update giusto prima di avviare la build per garantire che la cache sia coerente.

+0

Vengono aggiunti agli utenti nuget.config. Ad es .: C: \ users \ john \ appdata \ nuget \ nuget.config Non scadono – Sam

3

Abbiamo implementato il supporto del feed autenticato nel plug-in TeamCity. Segui i commenti al problema http://youtrack.jetbrains.com/issue/TW-20764

Problemi correlati