Domanda

Ho un installer NSIS che abbiamo precedentemente costruito utilizzando script Nant che copiano alcuni file ed eseguire makensis.exe tramite un compito exec per costruire l'exe di installazione. Dopo lo script Nant completa, ho la struttura compelte il nostro CD e anche la nostra download.

Stavo solo facendo un get da SourceSafe su un desktop inutilizzati e di utilizzarlo come una scatola di compilazione, la compilazione di lì. A volte avremmo un paio di file controllato in quel correzione qualcosa di critico. In questi casi vorrei andare alla casella di compilazione, e molto selettivo ottenere solo i file, per evitare di ottenere altri file modificati che non siamo pronti a rilasciare ancora. Fondamentalmente io sono in grado di consentire lo sviluppo di continuare e selettivamente includere determinate file modificati nel programma di installazione per il rilascio.

Ora non abbiamo più una scatola libera, e la necessità di costruire dal nostro server. Quindi io sono la creazione di CI di fabbrica in modo che lo sviluppatore può calciare il costruire senza di servizi remoti nel server. L'unico problema che sto lottando con, è il modo migliore per continuare a permettere questo controllo cambiamento selettivo a verificarsi. Il concetto di default di CI che CI fabbrica implementa va bene per lo sviluppo "testa" interno. Tuttavia, voglio anche di impostare un progetto CCNet che viene eseguito solo su richiesta tramite una Forza costruire per questo tipo "uscita pubblica" di costruzione.

Questo è quello che ho cervello preso d'assalto fino ad ora, senza essere sicuro di come questo funzionerà, se non del tutto (ancora capire quali CCNet e CI di fabbrica sono tutti circa). Il "release pubblica" CCNet progetto config / build sarebbe messa a punto tale che sarebbe non ottenere ultima. Le modifiche sarebbero non innescare una generazione. Dal momento che l'altro progetto CCNet che utilizza la metodologia di default CI (che chiameremo il "progetto CI") di ottenere più tardi, quando i cambiamenti sono rilevati, allora questi due progetti non possono condividere la stessa directory di lavoro. Così il "rilascio pubblico" avrebbe bisogno di una copia di lavoro diverso, in modo che i suoi file non saranno aggiornati quando costruzione del progetto CI viene attivato. Lo sviluppatore avrebbe bisogno di remota al server, uno VSS, selettivamente fare un entrare nella "release pubblica" 's copia di lavoro, e quindi forzare una generazione attraverso CI Factory.

Lo svantaggio che vedo con questo è
1) Dovendo a distanza in modo selettivo fare ottiene.
2) Non ho idea di come consentire un unico progetto CI fabbrica di avere due diverse copie di lavoro della cartella del prodotto, in modo che ciascun blocco di configurazione di progetto ha il proprio.
3) Ho paura di che tipo di stranezza che questo potrebbe causare. Io non sono molto sicuro ancora come specificare un blocco di controllo del codice sorgente nel blocco di configurazione del progetto CCNet, ma impedire che facendo un ottenere più tardi quando si costruisce. Sono ancora a poco a poco capire cosa le cose sono in script e possono essere facilmente estratte senza rompere le altre cose, rispetto a ciò che non è destinata ad essere muck in giro con e / o non è configurabile.

Mi piacerebbe davvero sentire come gli altri affrontare questo problema di rilasciare selettivamente i cambiamenti, se si dispone di una situazione simile. Sono costretto a VSS, quindi il mio bisogno immediato è quello di risolvere questo con questo in mente, ma allo stesso tempo sarei interessato a conoscere come gestire questo con altri sistemi di controllo del codice sorgente. Credo che si sarebbe probabilmente avere un ramo che è il tuo ultimo ramo sviluppi, e quindi unire le modifiche nel tronco ogni volta che si desidera rilasciare loro? Io davvero non mi fido VSS per la ramificazione / fusione, e credo che i concetti di ramificazione potrebbe essere un po 'troppo in alto e la curva di apprendimento per questo negozio. Come ho detto, però, storie con altri sistemi di controllo del codice sorgente sarebbe conoscenze utili futuro per me.

Grazie in anticipo.

È stato utile?

Soluzione

Hai bisogno di una struttura ramificata nel repository per facilitare questo. Qualcosa come il metodo di ramo di release. Solo selezionare gli individui possono impegnarsi a questo ramo (o di avere un rilascio / stabile per questo). Impostare il CI manuale di lancia di tirare dal ramo di release, come il rilascio notturno promuovere Milestone o finale da lì. Non mi piace l'idea di modificare manualmente le cose sulla vostra macchina build. Impostare i cambiamenti nel controllo di versione, in un luogo sicuro per preparare il rilascio e lasciare CI costruire da lì, ma attivata manualmente.

Dai un'occhiata a queste modelli di ramificazione . Ho suggerito C3, codeline-per-stampa, spesso chiamato il rilascio ramificazione.

Ecco un articolo su VSS ramificazione che include un link per la fusione.

sguardi simile.

Forse si potrebbe passare ad un altro sistema di controllo del codice sorgente con un supporto migliore per questo genere di cose. Eventuali suggerimenti da MS persone là fuori?

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