Domanda

Sto cercando di utilizzare CruiseControl 2.7.3 , (l'originale), per costruire un progetto Java che si trova in un repository SVN.

La mia configurazione per la crociera utilizza il svn plugin per il set di modifiche. Quando viene rilevata una modifica, viene pianificata una build utilizzando Ant. Quel file di build Ant quindi utilizza l'attività Ant di svnant per eseguire un checkout completo del progetto. Per un po ', abbiamo impostato questo solo per effettuare il checkout " HEAD " ;, ma abbiamo avuto casi in cui la build non si attiva per un check-in o due perché il check-in si è verificato dopo il controllo del set di modifiche, ma prima della chiamata ant per svn checkout. Di conseguenza, stiamo provando a modificare il file build ant per utilizzare il numero di revisione recuperato dal controllo delle modifiche.

La pagina di riferimento della configurazione di CruiseControl afferma che una proprietà, svnrevision , è impostato e passato ai costruttori, proprio come la proprietà label è di labelincrementers . Sembra non essere impostato quando premo il pulsante forza build .

C'è qualcosa che devo fare per farlo andare?

È stato utile?

Soluzione

Guardando il codice per il controllo del sorgente SVN sembra che svnrevision debba essere passato al builder, e quindi alla tua invocazione Ant. Hai provato a usare la proprietà dal tuo script Ant?

In risposta alla domanda nel commento:

Questo perché nel caso build forzato non c'erano modifiche, quindi non c'è un numero di revisione delle modifiche. In tal caso, svnlabelincrementer passerà l'ultimo numero di revisione per quello che hai localmente, che sarà anche l'ultimo.

Altri suggerimenti

L'invocazione di formiche cruisecontrol non ha nulla a che fare con l'etichetta (svn) che viene costruita come tale. L'etichetta svn viene utilizzata per annotare i nomi di build mentre build.log è in realtà solo l'output di ant mentre viene passato attraverso cruisecontrol.

Se desideri che il numero di revisione sia scritto nell'output di build ant, ci sono sostanzialmente due modi:

Un modo è far interagire la formica con svn in qualche modo. Svn in ant è disponibile solo attraverso un contrib form ant di tigris, quindi non lo è banale da mettere nel tuo file ant. Ma con questo nella tua build, potresti fare un svn info e ottenere il numero di revisione come proprietà della formica a tua disposizione.

Un altro modo è usare svnlabelincrementer per assegnare il numero di revisione all'etichetta e passarlo allo script ant usando buildproperties che vengono passati da cruisecontrol agli script di build. Come Jay ha menzionato nei commenti, l'etichetta contiene solo l'ultima revisione di successo della build, che non è ciò che vuole. È stata proposta una correzione su questo blog , ma facendo il il lavoro nel file build ant sembra più adatto.

Puoi usare l'impostazione quietperiod? Dopo un commit, CruiseControl può attendere un certo periodo di tempo (diciamo, 30 secondi) prima di dare il via a un build.

Non attiverà build individuali per ogni commit. Piuttosto, i commit nello stesso momento daranno il via a una singola build.

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