2013-06-14 6 views
21

Ho configurato un passaggio di build su TeamCity, come descritto in here, per eseguire distribuzioni di rilascio automatico sul nostro server di prova. Ma non sta usando gli ultimi pacchetti di nuget che sono stati creati in TeamCity.Implementazione di Octopus da Teamcity che non utilizza i pacchetti più recenti

caso d'uso:

TeamCity creerà NuGet pacchetto con la versione 1.0.0.9, tutte le DLL che è nel pacchetto è la versione corretta, e il rilascio di Octopus, che è stato distribuito ha avuto la stessa numero di versione, ma i pacchetti utilizzati da octopus appartengono a un pacchetto precedente, ad esempio 1.0.0.5.

Ho specificato il parametro --force nel passaggio di generazione in modo che utilizzi i pacchetti più recenti ma non lo è.

Se ho creare manualmente un rilascio di Octopus, e selezionare gli ultimi pacchetti si sta lavorando al 100%

favore qualcuno può dirmi se mi manca qualcosa.

grazie in anticipo

+0

ho impostarlo a guardare la cartella di pacchetti così, ancora non tirando gli ultimi pacchetti. – Captain0

+0

Qual è l'ordine dei passaggi di costruzione nella configurazione di Team City? – Jason

+0

Stai aspettando che la distribuzione finisca prima di continuare con altri passaggi? Forse la tua mancanza - aspetta la disoccupazione. Hai davvero bisogno di conoscere i passaggi che il tuo utilizzo a Team City è di grande aiuto. – Jason

risposta

19

Penso che quello che devi fare è creare due configurazioni di build in TeamCity, una da compilare e una da distribuire con Octopus. Fare riferimento a this link che ha un piccolo trafiletto verso la fine:

Note that NuGet packages created from your build won't appear in TeamCity until after the build completes. This means you'll usually need to configure a secondary build configuration, and use a snapshot dependency and build trigger in TeamCity to run the deployment build configuration after the first build configuration completes.

Così nel mio caso ho creato 2 configurazioni di build, quindi impostare una dipendenza snapshot dal build per la configurazione implementare e anche un trigger per dare il via la distribuzione dopo una build di successo.

+1

concordato. Puoi _can_ pubblicare build artefacts _during_ una build di TeamCity, ma è fatto in background, quindi non puoi ancora fare affidamento su di esso per quanto posso dire. Vedi http://confluence.jetbrains.com/display/TCD7/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-PublishingArtifactswhiletheBuildisStillinProgress – piers7

+0

Sì, ho anche visto [qualcosa di simile] (http://confluence.jetbrains.com/display /TCD8/What%27s+New+in+TeamCity+8.0#What%27sNewinTeamCity8.0-MetaRunner) in TC 8 utilizzando un meta runner dopo che ho postato questa risposta. Vorrei anche continuare con 2 configurazioni di build collegate a meno che non sia assolutamente necessario o stai cercando di rimanere sotto le 20 configurazioni di build consentite sotto la licenza gratuita :) –

+0

Ho cercato su google, e questa è la migliore risposta che ho visto, ma non sembra sbagliato? Non mi piace avere un progetto in più per ogni progetto per poterlo implementare. – seFausto

2

Esso si presenta come --force è solo per forzare pacchetti al essere reinstallato se sono già stati installati. Stai usando il parametro --packageversion?

+0

Non riesco a utilizzare il packageversion, dal momento che il sito Web che viene distribuito ha più progetti e la versione del pacchetto potrebbe non essere la stessa per tutti loro – Captain0

+0

Hmm, sarebbe possibile fornire loro la stessa versione del pacchetto? Se TeamCity sta creando i pacchetti NuGet, è possibile utilizzare il numero di build del TC quando si creano i file nuspec in modo che tutti i numeri dei pacchetti siano coerenti per una singola build? –

1

La mia organizzazione utilizza Jenkins CI. Usiamo il numero di build univoco come la nostra versione del pacchetto e quindi implementiamo quella specifica versione del pacchetto usando il parametro --packageversion.

Nel caso in cui abbiamo più servizi che devono essere schierato. Abbiamo un lavoro upstream/lavoro principale che fornisce il numero di build univoco.

mi immagino che si può fare la stessa cosa con TeamCity

Maestro lavoro (numero di build univoco) chiama posti di lavoro A e B di posti di lavoro con il parametro (costruzione unica). Lavori versione build A e B (da Master Job). I lavori A e B completi quindi pubblicano le rispettive versioni.

1

Potrebbe essere alcune cose.

Check out.

http://octopusdeploy.com/documentation/integration/teamcity

Non hai menzionato come il vostro consumare i feed da Octopus in TeamCity. Vorrei iniziare da lì.

Avanti vorrei utilizzare l'azione TeamCity per fare la tua deploy. Hai chiesto "Dove deve essere aggiunto il flag --waitfordeployment"? C'è una casella di controllo per assicurarsi che la distribuzione abbia funzionato prima che l'azione possa continuare.

+0

Ok il flag è stato controllato, il link non ha dato alcuna informazione che non ho già. Ma le distribuzioni continuano a dare lo stesso problema – Captain0

+0

Si tratta quindi di una chiave o di un problema di autorizzazioni con l'agente? La macchina agente ha accesso al pacchetto nuget subito dopo la sua distribuzione? – Jason

0

In TeamCity utilizzo un passo Pacchetti Octo Push e nel campo Parametri aggiuntivi specificano il parametro --defaultpackgeversion {VERSION}.

Questo obbligherà Octo a utilizzare una versione specifica di pacchetti invece di scegliere semplicemente "Ultima versione".

0

Ci sono altre possibili ragioni per il problema.

  1. Per vedere i problemi con Octopus vanno a Configuration -> Diagnostics enter image description here

  2. Un altro problema comune è quello di utilizzare un nome pacchetto#{variable} in una fase di deploy

    Al momento non è possibile e Nome pacchetto deve essere impostato manualmente, ad esempio MyWebSite o MyWindowsService. Vedere UserVoice per questa funzione. enter image description here