Puoi creare una build in un solo passaggio?


14

Dal test joel :

Puoi creare una build in un solo passaggio?

Devo dire che non posso. Attualmente sto lavorando ad un'app Web che ha un elenco di fogli di calcolo di elementi che devono essere eseguiti per essere distribuiti. Quindi la mia domanda è: come posso automatizzare questo ? Deve essere a livello di organizzazione? Consigli / tecniche?


3
Dipende dagli elementi nell'elenco? Idealmente, sì, dovresti essere in grado di automatizzarlo.
Nessuno il

4
en.wikipedia.org/wiki/Build_automation A proposito: alcuni restano un passo uno è troppo :)
Mchl

Tutti i tipi: sposta i file, esegui lo script delle procedure memorizzate, ecc., Ci sono 14 passaggi!
billy.bob,

2
Da un'angolazione diversa, cosa ritieni di non poter automatizzare nell'elenco?
Tyanna,

1
La domanda su come automatizzare una build non è soggettiva e dovrebbe essere posta su Stack Overflow. La domanda dovrebbe anche avere maggiori informazioni sui compiti necessari, per ottenere una risposta utile.
David Thornley,

Risposte:


10

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


2
make è uno di quegli strumenti tipo "coltellino svizzero"; mi piace lavorare con esso. Qualcos'altro da sottolineare dove make sarebbe utile è che se stai automatizzando la tua build / process / etc, e uno o più passaggi dipendono da un altro completamento con successo, make si fermerà se quel passaggio fallisce, non permettendo a quegli altri passaggi di procedere e può causare problemi.
Sarà il

1
Poiché molte "app / sistemi nix sono installate con" ./configure; rendere; make install 'Penso che make raddoppi anche come motore di installazione. Se può farlo, sono anche sicuro che può risolvere il dilemma dell'OP.
JBR Wilkinson,

Crea, ma la sintassi è piuttosto oscura. Ad oggi ho incontrato 2 alternative: SCons (molto più semplice di Make + makedepend) e uno strumento per automatizzare la creazione del Makefile (proprietario).
Matthieu M.

@JbRWilkinson ... come ho detto, make può fare praticamente qualsiasi cosa tu voglia;)
Pemdas,

3

A seconda del tuo ambiente, potresti voler guardare Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - questo è quello che ho familiarità. Le probabilità sono alte c'è una soluzione popolare per il tuo ambiente.


È un ambiente ASP.NET / SQL
billy.bob

@ m.edmondson - allora cruisecontrol.sourceforge.net è probabilmente la tua strada da percorrere
bobah

Un altro buon ambiente di integrazione continua per ASP.NET è TeamCity. Ho usato CruiseControl e TeamCity e ho trovato TeamCity un po 'più facile da usare e un po' più potente. Ma potrebbe non essere più così.
RationalGeek,

NANT è la variante di .NET ANT che abbiamo usato bene come complemento di Cruise Control che non userei per costruire il codice per la distribuzione in cui tendi a desiderare alcune cose aggiuntive incluse / modificate / set di parametri e modifiche e così via . Questo è ciò in cui ANT / NANT è bravo.
Jon Hopkins,

Io secondo il suggerimento di @Jon Hopkinds - nant è un ottimo abbinamento per il tuo ambiente.
JBR Wilkinson,


0

Sicuro c'è un modo per automatizzare questo. Con strumenti come Chef , configurare un server appena installato può essere semplice come:

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

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

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

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

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


0

È semplice con Maven nel mondo Java

mvn clean deploy

Nella nostra configurazione, esegue tutto il necessario per la creazione del file WAR (estraendo le dipendenze JAR in base alle esigenze), la distribuzione sul server web dev e la creazione di dati di test fissi sul database dev. Una volta installato, Maven gestisce i test funzionali completi tramite SeleniumRC per verificare che l'applicazione funzioni.

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

L'artefatto di istantanea (WAR) viene quindi copiato nel repository Maven per la condivisione con altri sviluppatori (secondo il deploycomportamento Maven standard ).

OK, ma hai solo distribuito un'istantanea a dev, che dire di test e produzione?

La distribuzione ai server di test e (successivi) di produzione viene gestita attraverso il processo di rilascio di Maven che ci piace gestire manualmente per garantire che qualcuno stia monitorando eventuali output sospetti. I tester funzionano solo con artefatti rilasciati, non con istantanee.

Una volta rilasciato, viene utilizzato un semplice script di compilazione per inviare il file WAR al cluster di server di prova SFTP, sempre con qualcuno che controlla il processo per assicurarsi che nulla vada storto.

Infine, dopo che tutti i tester sono soddisfatti, il file WAR invariato viene salvato da SFTP al cluster del server di produzione di failover, con qualcuno che tiene d'occhio e una posizione di rollback immediata in caso di disastro.


0

Ho pensato di poter verificare quello dal nostro test Joel così ...

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

Il codice è stato sincronizzato con VSS dalla riga di comando, build con borland make (la maggior parte degli IDE creerà i file make per te, indipendentemente dal fatto che li chiamino o meno. Delphi era solito pompare i file make e chiamarli .BPG, ora loro ' re i file XML di MSBuild e puoi usare MSBuild) e gli errori sono stati inseriti in un file XML a cui ho continuato ad aggiungere.

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

  1. Sincronizza il codice dal controllo del codice sorgente
  2. Elimina cose stupide (singoli file di configurazione per progetti) che sai ti impediranno di costruire tutto.
  3. Costruisci tutto (costruirei tutto, farei tutto fratello).
  4. Registra i tuoi errori, avvisi e cose, ma non smettere di costruire. (Se sei davvero intelligente, estrarrai il nome dell'ultima persona per controllare il file che ha causato l'interruzione della build e inviargli un nastygram)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.