Domanda

Sto cercando di automatizzare il processo di compilazione per l'ingegneria del gruppo.Come parte di automazione, sto cercando di arrivare a un punto in cui l'atto di applicazione di un tag specifico che aderisce ad un modello prenderà il via un processo automatico che farà il seguente:

  • Controllare il codice sorgente
  • Creare uno script di compilazione da un modello
  • Costruire il progetto

Sono piuttosto certo che potrei farlo con un post-gancio in subversion, ma sto cercando di capire un modo per farlo con qualcosa di diverso da un sovvertimento gancio.

  • Avrebbe senso per monitorare il tag directory del repository subversion "kick off" il mio flusso di lavoro?
  • Ci sono decente strumenti che aiutano con questo (.NETTO sarebbe grande se possibile).
  • Sto meglio solo la scrittura di un motore per fare questo?

Le mie preferenze:

  • Prodotto esistente che fa di tutto o parte di questo
  • Se il lavoro di sviluppo deve verificarsi .NET è preferibile
  • Funziona con Windows (abbiamo un Linux based repo, ma si basa tutto si verifica in windows)
È stato utile?

Soluzione

Mi piace Hudson - facile da configurare e funziona out of the box con SVN.

È possibile configurarlo per costruire su ogni commesso.

ho scaricato, ma ho iniziato a costruire con esso in un giorno. Si è passati attraverso un sacco di ritocchi, ma lo consiglio a chiunque.

ho usato anche il cruise control, ma non sono felice con quello. Non ho alcuna motivazione specifici diversi da problema cross-platform.

Modifica

Recentemente ho aggiunto un lavoro sul mio build server Hudson che attende una / gmail jabber chat di Google. Posso "promuovere" una "normale" costruire una build di rilascio con questo meccanismo. Ho appena creato un nuovo lavoro che fa i passi necessari per promuovere / pubblicare una costruzione privata in una release candidate.

Altri suggerimenti

Ho fatto questo utilizzando Hudson. Nello slot regolare sovvertimento checkout ho una cassa per il tronco:

http://dryad.googlecode.com/svn/trunk/dryad

Poi, come la prima azione di build, ho un "eseguire la shell" e in quel guscio utilizzare un interruttore svn per passare alla più recente tag nel repository:

http://dryad.googlecode.com/svn/tags/ ' svn ls http://dryad.googlecode.com/svn/tags | tail -n 1' driade

Il passaggio di generazione successiva è un esperto di 'installazione pulita' di comando che avvia la build utilizzando il codice della versione tag.

Non ho ancora capito come ottenere Hudson di iniziare con una versione più recente tag, piuttosto che dover fare l'interruttore, ma l'interruttore funziona. È quindi possibile avere il grilletto sia quando la directory variabile viene aggiornato.

E 'automatizzato ... un po' un ripiego, ma funziona ...

l'interruttore deve includere un apice inverso per il secondo comando svn ma ha dovuto usare 'perché l'apice inverso non si fece vedere qui.

Sembra che si sta dopo un motore di costruire qualcosa di integrazione continua come CruiseControl o Hudson (Hudson scritto in Java, ma è molto facile da usare nelle finestre).

Ora si potrebbe fudge i vostri script di build per questi strumenti per guardare la directory tag, ma sarebbe un po 'contro il grano come sono destinati a guardare una posizione specifica e generare il progetto in quella posizione. Se si guarda l'intera directory tag, si potrebbe facilmente finire con verrebbero ritirati sul sistema di compilazione tutti i tag e avresti bisogno di uno script di alto livello per decidere quale tag costruire.

Per ciò che si vuole, un motore di build può guardare una posizione specifica (ad esempio '/ rami / release'). Se poi fondersi in quel ramo, Hudson costruirà automaticamente il progetto, archiviare i manufatti e creare un tag per voi se era tutto successo (vedi la Subversion Tagging Plugin).

Non mi piace fare questo genere di cose da un post-commit hook perché rende il commit fase di troppo lungo. Tuttavia, TeamCity è un sistema di controllo del codice sorgente, che ha una caratteristica che fa esattamente questo senza di te alzando mentre si impegna.

Mi consiglia Hudson per questo.

CruiseControl.Net può facilmente automatizzare automatico costruisce dal repository Subversion.

E 'in grado di monitorare il repository (SVN e molti altri tipi) e avvio automatico costruisce utilizzando una varietà di strumenti. (NAnt, MSBuild, ecc.)

Un prodotto commerciale è stato pubblicizzato su questo sito proprio per questo scopo!

http://www.finalbuilder.com/Default.aspx?tabid=314

Potrebbe essere necessario aggiungere un post-gancio per SVN per innescare l'inizio di costruzione a meno che non si desidera essere eseguito un calendario.

Consiglio anche Hudson per questo. Stavo cercando di fare qualcosa di simile, creare un tag e che hanno kick off una generazione. Invece ho scelto di usare questo plugin per Hudson:

http://wiki.hudson-ci.org/display/HUDSON/ uscita + Plugin

E utilizzare questo per guidare la creazione del tag e un build di rilascio esplicito.

NAnt (e NAntContrib ) per automatizzato costruisce. Esso controlla automaticamente un repository subversion di cambio e (se ce ne sono) ottiene l'ultima versione del codice sorgente e inizia la compilazione.

Non sono sicuro se i compiti esistenti permettono di fare esattamente quello che vuoi, ma forse si potrebbe usare come un inizio e, se necessario, estendere i compiti per le vostre esigenze particolari (E 'sviluppato con .NET).

Come gli altri ragazzi, ha detto, si vuole un server di integrazione continua (CruiseControl, CruiseControl.Net Hudson, ecc).Mentre si può lavorare su script di generazione e di impegnarsi ganci per effettuare la funzionalità che hai descritto, alla fine, troverete che è re-inventato la ruota (Continuous Integration Server).Non è necessario, ci sono liberamente disponibili soluzioni proprio per questo scopo.

Il processo di lavoro un po ' diverso da quello che hai descritto sopra.Il build server:

  1. Rilevare un nuovo commit
  2. Checkout il codice sorgente
  3. Eseguire script di generazione
  4. Tag per creare con successo

Il commit che innesca il processo e crea il tag anziché il tag innescare il processo.Il server esegue questa mia monitoraggio repository svn, piuttosto che commettere un gancio.

Check out CruiseControl.Net's di documentazione su questo argomento, in particolare le opzioni tagOnSuccess e tagBaseUrl.Hudson e CruiseControl dovrebbe avere opzioni simili.

http://confluence.public.thoughtworks.org/display/CCNET/Subversion+Source+Control+Block

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top