2009-06-18 9 views
5

Dove lavoro usiamo un programma impostato per costruire le nostre applicazioni. Cosa è coinvolto nelle build? Che cosa è implicato nell'ottenere un'applicazione per la compilazione in un luogo diverso dall'host locale?Che cosa è implicato nel creare una "build"?

+3

Non penso che questa sia una domanda chiara –

+9

All'inizio va bene essere vago, ma poiché l'OP riceve più informazioni, è incoraggiato a modificare la sua domanda ea restringere la sua risposta. A volte le persone non sanno davvero cosa stanno cercando ... iniziare vago va bene. IMO almeno. –

+2

@Rich non è divertente, non è bello .. @ Mitch ho provato a restringerlo. Ma forse sto usando il termine sbagliato. Mi sto solo chiedendo cosa comporta consentire a un'app di creare qualcosa di diverso dall'host locale. @TSamper Ovviamente era l'unico ragazzo a cercare anche di capire cosa stavo chiedendo. – Eric

risposta

5

Mi sono imbattuto in questo solo l'altro giorno ... Aiuta a chiarire alcune cose riguardanti la creazione di siti Web ASP.NET. Non è una risposta definitiva, ma vale la pena dare un'occhiata.

http://msdn.microsoft.com/en-us/library/399f057w.aspx:

ASP.NET offre due opzioni per la precompilazione un sito:

precompilare un sito in atto. Questa opzione è utile per i siti esistenti in cui si desidera migliorare le prestazioni ed eseguire il controllo degli errori.

Precompilazione di un sito per l'implementazione. Questa opzione crea un output speciale che è possibile distribuire su un server di produzione.

Inoltre, è possibile precompilare un sito per renderlo di sola lettura o aggiornabile. Le seguenti sezioni forniscono maggiori dettagli su ciascuna opzione.

+0

Stanno per chiudere questo presto ... ma grazie Questo articolo aiuterà. – Eric

+1

@Eric - Non penso che qualcuno lo chiuderà. È una bella domanda –

+1

@ unforgiven- Era già chiuso prima. Ho votato per riaprire, non ho mai pensato che fosse una brutta domanda – TStamper

3

C'è un wikipedia article sul tema:

Nel campo del software per computer, il termine di build del software si riferisce sia al il processo di conversione del codice sorgente file in software standalone artefatto (s) che può essere eseguito su un computer o il risultato di ciò. Una delle fasi più importanti di una build di software è la compilazione in cui i file di codice sorgente sono convertiti in codice eseguibile.

Mentre per i programmi semplici il processo è costituito da un singolo file di essere compilato, per il software complesso il codice sorgente può essere costituito da molti file e possono essere combinati in modi diversi per produrre diverse versioni.

Il processo di costruzione di un programma per computer è di solito gestito da un tool di creazione , un programma che coordina e controlli altri programmi. Esempi di come un programma sono make, ant, maven e SCons. L'utilità di compilazione deve compilare e collegare i vari file, in l'ordine corretto. Se il codice sorgente in un particolare file non è stato modificato , potrebbe non essere necessario ricompilare (potrebbe non essere necessario perché può dipendere da altri file che sono stati modificati). Sofisticato build utilità e linker tentano di di ricompilare il codice che non ne ha bisogno, per ridurre il tempo richiesto per completare la compilazione. I programmi di utilità moderni possono essere parzialmente integrati nel controllo di revisione programmi come Subversion . Un altro processo complesso può coinvolgere altri programmi che producono codice o dati per il processo di compilazione.

+0

Grazie Jon! +1 – Eric

4

Lo scopo di base di una build è garantire che l'insieme coerente di tutti i file necessari per il sito Web sia distribuito insieme.

Ciò si ottiene in genere recuperando i file dal controllo del codice sorgente, impacchettandoli in un archivio o archivi appropriati (chiamati artefatti del processo di compilazione) e quindi con script che inviano questi file ai server di produzione o QA in cui è l'applicazione quindi lanciato.

A seconda della tecnologia e del progetto, lo script di compilazione può compilare file, eseguire test, creare archivi, copiare file in posizioni diverse e cose di tale natura.

Esistono diversi strumenti per supportare il processo di generazione per fornire la capacità di script sottostante. A volte lo scripting può avere proprietà uniche, come assicurare che una determinata attività venga eseguita una sola volta, anche se parti diverse di una build più grande devono garantire che venga eseguita (come un'attività per creare una directory per distribuire le risorse, la directory è solo creato una volta e il motore di script build (come NAnt) assicura che anche se l'attività viene chiamata più volte viene eseguita una sola volta per build

Se vuoi saperne di più sulle build, cerca un po 'di spazio aperto progetti di origine che utilizzano una tecnologia con cui si ha familiarità e guardare il loro processo di generazione (come si cambia codice e distribuirlo)

+0

+1 per il primo par. –

+0

Grazie Yishai! +1 – Eric

4

This Joel On Software l'articolo è la mia spiegazione preferita di build, build giornaliere, creazione di server di tutti i tempi

La sua tesi centrale in questo e molti altri articoli è lo sforzo maggiore che ci vuole per creare una build (il che significa qualsiasi compilazione o trasformazione di file sorgente, inclusa la modifica della loro posizione in modo che siano pronti per la produzione/test). meno produttiva e di bassa qualità il tuo software sarà e più errori sarai incline a durante la distribuzione/build. Idealmente, con un'applicazione web, hai un unico script che puoi fare doppio clic, afferra i file più recenti dal controllo del codice sorgente, li compila e distribuisce tutto nella posizione di destinazione.

Esistono molti prodotti commerciali che possono aiutarti in questo senso. Mi piace Team Foundation Server ma potrebbe non adattarsi alla scelta del linguaggio Budget/Cultura/Programmazione. Avere uno script di compilazione personalizzato non è la peggiore idea perché offre ai tuoi programmatori una visione eccezionale del tuo processo.

+0

Davvero utile +1 – Eric