Domanda

Questa è una domanda di seguito di una domanda precedente che ho fatto

Ora ho una directory / externals nella radice dell'albero del mio progetto. All'interno di questo ho un riferimento a un altro progetto. Sono in grado di scrivere la build di tutti i miei esterni nella sceneggiatura principale del progetto NAnt. Il risultato di queste build è il seguente:

/ esterni / esterno-project1 / build / buildartifacts / {DLL | html | js}

/ esterni / esterno-project2 / build / buildartifacts / {DLL | html | js}

Va ??tutto bene, ma ora sono curioso di sapere come il mio progetto principale dovrebbe fare riferimento a questi manufatti di costruzione. Ad esempio, supponiamo che un progetto esterno costruisca una DLL da cui dipende parte della mia base di codice. Devo semplicemente fare riferimento alla DLL nella directory dei manufatti di compilazione o devo implementare un'altra attività NAnt che li copia in una cartella / thirdparty / libs /?

Ciò significa che la mia build ora dipende dalla capacità di costruire questo progetto esterno (che potrebbe essere interno o di terze parti). È una buona idea controllare l'ultimo set di artefatti della build per assicurarsi che la build principale non si rompa a causa della rottura delle build dipendenti?

Spero sia abbastanza chiaro. Basta scrivere questo ha chiarito il problema per me :-).

- Modifica -

Grazie ragazzi. Penso che implementerò il "checkout di una revisione", ma dato che le build sono così veloci non ho intenzione di controllare nessun manufatto di build. Dovremo anche capire come gestire le dipendenze del progetto esterno (ad esempio: prototipo, oggetto swf, ecc.).

È stato utile?

Soluzione

Direi di costruirli una volta e controllare i manufatti di compilazione in / public / ext / some_dependency / ref (ovviamente, la denominazione di quella cartella dipende da te :-)) e fare riferimento da lì.

Il mio motivo principale è che raramente è necessario creare dipendenze esterne ogni volta che si crea un prodotto. In generale, le dipendenze esterne dovrebbero cambiare raramente. Inoltre, si desidera un controllo rigoroso quando si selezionano le modifiche alla dipendenza esterna, per evitare l'instabilità durante la fase di codifica.

Come estensione a questo, aggiungerei un'attività CI separata che creerebbe solo le dipendenze esterne e le controllerebbe nella suddetta cartella su una condizione esterna - un commit nella cartella sorgente delle dipendenze o qualcos'altro.

Altri suggerimenti

Uno dei consigli che ho ricevuto (che penso provenga dal libro Pragmatic Version Control di Mike Mason) di fare riferimento a particolari revisioni nel tuo esterno, in modo da ottenere sempre la stessa versione della dipendenza esterna fino a quando non decidi esplicitamente di cambiarlo.

A questo punto, probabilmente lo hai creato in modo interattivo una volta per assicurarti che funzioni, quindi fare affidamento su di esso per costruire ogni volta non è davvero un problema, il che evita la necessità di aggiungere un po 'di indiretto nelle attività di compilazione.

Se si sceglie di avere il riferimento indiretto, e per qualche motivo una build non riesce su un esterno, è possibile che questo venga perso poiché l'attività successiva del nant prenderà il binario precedente.

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