Domanda

Se stai facendo un progetto solista - vuoi utilizzare gli strumenti di CI per costruire da un repository? Ho usato Hudson e Cruise Control in un ambiente della squadra, in cui è essenziale per costruire il più presto controlli niente a nessuno in.

Credo che il valore di controllo di versione è ancora evidente, ma ho bisogno di costruire dopo ogni impegno, visto che vorrei solo hanno costruito sulla mia macchina locale, e nessun altro sta commettendo?

È stato utile?

Soluzione

Bene Sto pensando di utilizzare uno strumento di integrazione continua su un progetto e io sono lo sviluppatore unico. La necessità deriva dal fatto che

  1. Uno degli obiettivi è quello di rendere cross-platform, e avere uno strumento di integrazione aiuta implicitelly (base) controllare la vostra applicazione su diverse piattaforme se avete già trasmesso le modifiche nel repository di integrazione (o di quello centrale, o qualsiasi cosa sia quello che verrà utilizzato come autorevole).
  2. Il progetto è costruito per a lungo termine in modo da ho bisogno di lavorare con un team più tardi. Non ho intenzione di reclutare chiunque fino al 2012 quindi la cosa continua integrazione può attendere per il momento, fino a quando 1. diventa la priorità.

Oltre a cross-platform e la preparazione lavoro di squadra, non vedo la necessità. La cosa principale è quello di avere un qualche tipo di software di controllo del codice sorgente e avere diversi repository per mantenere i backup. Che vi aiuterà a costruire strumenti di configurazione intorno ad esso in caso di necessità.

A proposito i tempi di compilazione, sto utilizzando Mercurial e la creazione di un repository di integrazione che non è il repository lavoro di squadra. Quindi, spingere cambia nel repository lavoro di squadra fino a quando sento che è il momento di fare il sistema di integrazione cercare di costruire. Poi spingo dal repo lavoro di squadra per il repo integrazione e che attiveranno la compilazione. Poi ho anche aggiungere uno script che tirerà il pronti contro termine il lavoro di squadra per l'integrazione di pronti contro termine una volta ogni giorno.

Qui sto supponendo che io lavoro quasi tutti i giorni sul mio progetto ma non è sempre vero. È necessario impostare una temporizzazione di compilazione che è relativo a quanto spesso è necessario costruisce. In una società di gioco ho lavorato in precedenza, abbiamo usato CruiseControle ed è costruito una generazione completa ogni ora. Si potrebbe anche forzare un accumulo ogni volta che volevamo, se necessario.

Per un progetto di casa, una volta al giorno potrebbe essere già "spesso". Il requisito principale sarebbe quello di permettere facilmente all'utente di forzare il lancio di una generazione.

Altri suggerimenti

Dopo una breve contemplazione vorrei suggerire che potrebbe anche essere più importante per uno sviluppatore solista che per una squadra.

Al livello più elementare di un server CI dimostra che si può costruire la vostra applicazione da zero dalla fonte impegnato -. Combinata con un set decente di test dovrebbe dimostrare che è possibile costruire e gestire da zero

Dal momento che una delle cose che cerco di fare è garantire che la mia generazione include un pacchetto distribuibile si sa anche che si può andare a prendere qualcosa da implementare (pulito e da una nota di stato / versione).

Da oggi infatti, quando si esegue File | Nuovo progetto probabilmente si dovrebbe includere la creazione o l'aggiunta al repository e la creazione di script di CI di compilazione e installazione di distribuzione (anche se è solo per zip un mucchio di roba per la distribuzione xcopy)


Addendum (2016) - al giorno d'oggi il mio sistema CI sarà anche parte integrante del mio processo di distribuzione, quindi il suo valore è aumentato e io assolutamente non verrà eseguito alcun fornire del progetto senza di essa. Distribuzione automatica pulsante prende un sacco di stress del processo e, in qualche modo, forma o un server di build è parte integrante di questo.

Quando mi sono l'unico commettere, ho solo costruire e testare prima effettivamente commesso. Io di solito uso un obiettivo makefile come:

make sense

che configura, costruisce, gestisce tutti i test (valgrind a conoscenza), corre garze, ecc Come so che sarò l'unico a spingere, non ho davvero bisogno del potere di qualcosa come Hudson.

Inoltre, in un ambiente in cui si dispone di diversi rami che alimentano un repository principale, se ognuno segue la sempre tirare prima di impegnarsi o spingere, il server CI potrebbe essere un po 'più di uccidere. Una regola ben scritto che l'autore di tutto ciò che ha rotto l'ultimo acquisti costruire la pizza il Venerdì di solito mantiene le cose in esecuzione molto agevolmente:)

Se si arriva in una situazione in cui un progetto è chiaramente diviso in sottosistemi che hanno i propri leader, è davvero necessità di contemplare utilizzando qualcosa di simile Hudson. Qualcuno potrebbe testare a livello locale, perdere una gara con un altro sistema di sub e finiscono per spingere qualcosa di tossico.

Inoltre, se si sta mantenendo un fork di un progetto in rapido movimento (per esempio, il proprio set di patch al kernel di Linux), si dovrebbe davvero considerare l'utilizzo di qualcosa come Hudson, anche se si è 'Solo' su quel progetto . Questo è particolarmente vero se si diramano / re-base direttamente dalla linea principale.

Non direi che questo è solo un bonus bello, direi che è fondamentale per l'ingegneria del software di alta qualità per noi da solista artisti là fuori. La maggior parte di noi lasciare i loro standard di qualità scivolare un po 'se in una corsa di se pensano che la sua abbastanza facile da riparare in seguito. Se commetti un software in quello stato, è in sostanza dispone di una base di codice inutile memorizzato nel vostro controllo del codice sorgente.

se rispettate correttamente (che è, non saltare i test e assicurarsi che costruisce ogni volta che si commettono) forze CI di aderire ad uno standard qualitativo più elevato di quanto si farebbe se solo impegnarsi in ogni modo .

E 'importante se si vuole ridurre il tempo di attesa per vedere se tutto è ancora in corso bene. Anche se è possibile ottenere il vostro IDE per roba di compilazione per voi, non appena si salva, non viene eseguito automaticamente i test di unità, così ho il mio server CI eseguire i test di unità e le relazioni di copertura di casi di test e altre analisi di qualità del mio codice, non appena mi spingo.

L'unico grilletto che devo fare è spingere i miei attuali modifiche al controllo di versione e posso tornare a codifica. E mentre io sto pensando di codifica, il sistema di C'è occupato a sfornare lungo a fare lunghe relazioni sulla qualità winded che guarderò di tanto in tanto, quando il mio cervello va in un momento di tregua.

Ho una macchina VMWare separata sullo stesso computer portatile che fa le generazioni per il codice che mi spingono a. Per fare questo ho appena ottenere un'immagine chiavi in ??mano Linux VMWare e installare i Jenkins usando apt-get e fare un paio di modifiche alla configurazione minore .

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