2015-05-22 14 views
14

Sto provando a configurare un server CI per un sito Web che sto sviluppando, ma non riesco a trovare alcuna informazione su come farlo con il nuovo ASP.NET 5.Come configurare un build TeamCity per un progetto ASP.NET 5

+1

http://blog.coderinserepeat.com/2015/01/25/building-asp-net-5-projects-in-teamcity/ – Shrike

+0

Ho iniziato a seguire quell'articolo, ma alla fine ho utilizzato il file build.cmd suggerito su La risposta di Victor, penso che sia più facile da seguire, sebbene non ci sia documentazione su come utilizzare gli strumenti. –

risposta

9

Noi (il team ASP.NET) utilizzare TeamCity come server di generazione. Ogni repo ha un file build.cmd, simile a this one. TeamCity invoca semplicemente quel file.

Per le versioni Mac/Linux, esiste un file build.sh.

+1

Victor, ci sono delle informazioni sugli strumenti di Sake \ KoreBuild da qualche parte? Perché hai scelto Sake? – Shrike

+0

Grazie Victor, questo ha risolto i miei problemi =) –

+0

È questo il modo in cui dovresti usarlo oggi nel 2016? Stavo esaminando il file build.cmd e sta provando a usare KoreBuild dai pacchetti di nuget. Quel pacchetto non esiste oggi. Qualche idea su come costruire questo? –

1
+0

Beh, i link ai blog post sono come più di un anno. Cosa posso dire se non "per favore controlla la data di un post sul blog e prova a trovare informazioni recenti prima di spendere 5 ore a seconda di questo?" Soprattutto se hai intenzione di usarlo in produzione. – detay

+0

Il problema è che non ci sono nuove informazioni che riesco a trovare. Scusa, sono stato piuttosto frustrato l'altro giorno. Per ora rimuoverò i miei commenti e non voterò, ma ha ancora bisogno di un modo migliore. –

9

I got you fratello. Mi ci sono voluti alcuni giorni per capire. Questa configurazione è su TeamCity v10 per un progetto ASP.NET Core 1.0 RC2/preview2. Come bonus, sto includendo il passo in cui spinge a Octopus Deploy. È necessario installare il plug-in dotnet di teamcity e il più recente plug-in Octopus Deploy con funzionalità Push. Ecco una panoramica dei passaggi di compilazione:

Build Steps Overview

Prima di tutto, non provare a utilizzare dotnet restore per ripristinare i pacchetti. Non funzionerà se hai pacchetti interni di nuget che non sono compilati come .Net Core. Questo ha richiesto un'eternità per capirlo. Ignorerei di provare a utilizzare dotnet restore finché le persone non avranno convertito tutto in .Net Core o Microsoft risolve dotnet.exe per essere più flessibile.

Build Step 1/3

Alcune delle cose che ho letto detto di utilizzare la più recente versione beta di NuGet, 3.5. Quando ho provato questo, avrei ricevuto il seguente errore.

[14:30:09] [ripristinare] A partire NuGet.exe 3.5.0.1737 da D: \ buildAgent \ tools \ NuGet.CommandLine.3.5.0-rc1 \ Tools \ NuGet.exe

[14 : 30: 10] [ripristino] Impossibile caricare il tipo 'NuGet.CommandAttribute' dall'assembly 'NuGet, Versione = 3.5.0.1737, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.

Non so cosa significhi, e non mi interessa. Usa 3.4.4 per ora. Compila il resto come appropriato.

Build Step 2/3

Il dotnet publish passo è abbastanza semplice. Assicurati di fornire la directory di output perché vuoi usarla nella fase finale. Inoltre, assicurarsi di specificare un percorso assoluto utilizzando la variabile %teamcity.build.workingDir% a causa di this bug. In caso contrario, non riuscirà a trovare il file web.config e non terminerà la pubblicazione dell'intero sito. Mancheranno cose come web.config e wwwroot! Build Step 3/3

Infine spingiamo verso Octopus. Questo è stato molto difficile per me.Si noti la parte che dice %teamcity.build.workingDir%/published-app/**/* => OrderReviewBoard.1.0.0.zip

SE QUALSIASI PARTE DI QUESTO non è valido, IL TUO PUNTO fallirà senza spiegare STESSA !!! Per invalido, voglio dire che potresti inserire una variabile di ambiente di teamcity (come lo %build.number% che mostrano in tutti gli esempi) in quel nome zip che non si risolve correttamente. O si specifica un percorso inesistente. O qualsiasi numero di cose, vedrai un errore che dice "[Distribuzione di Octopus] Specifica un pacchetto da premere". Ciò significa che uno non è mai stato generato perché quella dichiarazione è fallita. Mi rendo conto che vuoi avere un numero di build autoincrementante lì. Lascerò a te capire come farlo.

Non essere confuso da ciò che è in esecuzione qui. Octopus tries to explain it on their site, ma è nascosto qui. C'è octo pack e octo push. La nuova versione di octo pack è a corto di vista, in base a qualsiasi affermazione inserita nella casella "Percorsi pacchetto". Non farti sviare cercando di creare un pacchetto nuspec o provare a usare dotnet pack. Questi sono vicoli ciechi per i nostri scopi. Crea un file .zip e vai avanti con la tua vita. Infine, nota gli argomenti aggiuntivi della riga di comando che ho aggiunto. Questi ti aiutano un po '. Non sono richiesti In bocca al lupo.

+0

Non riesco a far funzionare questa soluzione. Il primo passo di costruzione ha esito negativo con il seguente messaggio di errore: "Errore nella lettura di F: \ TeamCity \ Files \ buildAgent \ work \ src \ solutionname \ project.json" nella riga 13 colonna 23: TODO: piattaforma di parole chiave sconosciuta ". Mi sono assicurato che l'ultima CLI sia installata ma non riesce ancora. Hai incontrato questo, se sì come lo hai risolto? –

+0

@ Carl91 Aprire il file project.json nella soluzione. Alla riga 13 apparentemente hai una riga non valida, un commento di "TODO: qualcosa di qualcosa". Rimuovi quella linea e spingila su TeamCity. – redwards510

+0

L'unica cosa che avevo sulla linea 13 era "netcoreapp1.0": {. Tale framework non sembra essere supportato nell'ultima versione stabile di nuget (3.4.4.). Aggiornato alla 3.5.0-beta2 e ha funzionato bene. –

Problemi correlati