Puoi creare una build in un solo passaggio?

14

Dal test di joel :

Can you make a build in one step?

Devo dire che non posso. Attualmente sto lavorando a un'app Web con un elenco di fogli di lavoro che deve essere eseguito per poter essere distribuito. Quindi la mia domanda è come posso automatizzare questo ? Deve essere un'organizzazione larga? Consigli / Tecniche?

    
posta billy.bob 13.01.2011 - 13:26
fonte

6 risposte

10

Make può automatizzare il processo di compilazione in un unico passaggio. Make può fare praticamente quello che vuoi. Non sono sicuro del motivo per cui sapporo pensa che Make si applica solo a C / C ++. Puoi usare make per eseguire qualsiasi tipo di comando. Non è nemmeno legato alla programmazione, ma è quello per cui è tipicamente usato.

    
risposta data 13.01.2011 - 14:41
fonte
3

A seconda del tuo ambiente, potresti voler dare un'occhiata a Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - quelli con cui ho familiarità. Le probabilità sono alte c'è una soluzione popolare per il tuo ambiente.

    
risposta data 13.01.2011 - 13:35
fonte
3

Al lavoro, utilizziamo FinalBuilder , che semplifica la configurazione di uno script per automatizzare l'intero processo: controlla codice, crea tutto, esegui test, crea pacchetti di implementazione, ecc.

È uno strumento molto valido e ha recentemente vinto il Dr. Dobbs Jolt Award per gli strumenti di Change e Configuration Management.

    
risposta data 13.01.2011 - 18:22
fonte
0

Certo, c'è un modo per automatizzarlo. Con strumenti come Chef , la creazione di un nuovo server appena installato può essere facile come:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

Nel mio caso alcuni passi eseguiti da quel singolo comando sono:

  • Installa librerie, programmi e moduli Python richiesti
  • Crea nuovi utenti con privilegi di accesso specifici
  • Crea nuovi database, carica lo schema richiesto, imposta proprietà e diritti di accesso
  • Scarica e mette in scena il codice del progetto e poi scrivi le informazioni di configurazione
  • Porta tutto in modalità produzione lanciando i server di database, impostando i lavori cron, ecc.

Non sono sicuro di come lo Chef si esibirà nel tuo ambiente in quanto il supporto di Windows è elencato come "preliminare", ma per il sistema basato su UNIX sono le ginocchia delle api.

Puppet è un sistema simile che è un po 'più vecchio dello chef e può offrire un migliore supporto di Windows.

    
risposta data 13.01.2011 - 17:13
fonte
0

È semplice con Maven nel mondo Java

mvn clean deploy

Nella nostra configurazione, questo fa tutto il necessario sviluppo del file WAR (tirando le dipendenze JAR come necessario), la distribuzione sul server web di sviluppo e la creazione di dati di test in scatola sul database dev. Una volta installato Maven gestisce i test funzionali completi tramite SeleniumRC per verificare che l'applicazione funzioni.

Questo singolo comando porta l'applicazione completamente distribuita al cluster del server di sviluppo in modo che sia prontamente disponibile per altri sviluppatori con cui lavorare immediatamente (supponendo che abbia superato i test). È insolito che una distribuzione di sviluppatori fallisca poiché gli sviluppatori hanno verificato che funziona localmente con mvn clean install .

Lo snapshot artefatto (WAR) viene quindi copiato nel repository Maven per la condivisione con altri sviluppatori (come da comportamento standard Maven deploy ).

OK, ma hai appena implementato un'istantanea da dev, per quanto riguarda test e produzione?

La distribuzione al test e (più tardi) i server di produzione viene gestita tramite il processo di rilascio di Maven che ci piace gestire manualmente per garantire che qualcuno stia guardando per qualsiasi output sospetto. I tester funzionano solo con artefatti rilasciati, non con istantanee.

Una volta rilasciato, viene utilizzato un semplice script di build per SFTP il file WAR al cluster del server di test, di nuovo con qualcuno che osserva il processo per assicurarsi che nulla vada storto.

Infine, dopo che tutti i tester sono felici, il file WAR non modificato è SFTP fino al cluster del server di produzione di failover, con qualcuno che tiene d'occhio e una posizione di rollback immediata in caso di disastro.

    
risposta data 13.01.2011 - 18:15
fonte
0

Ho pensato che potevo controllare quello dal nostro test di Joel quindi ...

Ho creato un server di build in python automatizzato usando pychron .

Il codice è stato sincronizzato con VSS dalla riga di comando, compilato con Borland Make (la maggior parte degli IDE crea i file per te indipendentemente dal fatto che li chiamino.) Delphi usava pompare i file make e chiamarli .BPG, ora sono file XML MSBuild e puoi usare MSBuild) e gli errori sono stati inseriti in un file XML che ho continuato a aggiungere.

Quindi .. Basta scrivere un file batch e fare queste cose.

  1. Sincronizza codice dal controllo sorgente
  2. Elimina cose stupide (singoli file di configurazione per i progetti) che saprai ti impediranno di creare tutto.
  3. Costruisci tutto (costruiscoi tutto, fai tutto il fratello).
  4. registra i tuoi errori, i tuoi avvisi e tutto il resto, ma non smettere di costruire. (Se sei davvero furbo estrai il nome dell'ultima persona per controllare il file che ha causato la rottura della build e mandagli un nastygram)
risposta data 13.01.2011 - 18:41
fonte

Leggi altre domande sui tag