2013-02-12 14 views
6

Non riesco davvero a capire il concetto delle dipendenze degli snapshot in teamcity (7.1).Sostituisci parametro nelle dipendenze degli snapshot in TeamCity

Abbiamo un progetto di build che distribuisce il database in base a un parametro di build (nome e file del database) e ho un progetto di build che costruisce e distribuisce la nostra app web.

Quello che vorrei fare ora è concatenare queste due build ma ignorare il parametro di build. Ho trovato il manuale su come accedere ai parametri di configurazione della dipendenza (% dep.btXX.yyy%) ma non voglio accedervi, voglio sovrascriverli!

Come posso ottenere questo risultato? Ho creato una nuova build in cui faccio scattare la build & deploy e quindi la build del database ma ignora completamente i miei parametri di dipendenza e inoltre non posso modificare l'ordine delle build.

Grazie per l'aiuto!

+0

Stai parlando di una dipendenza dei parametri di generazione inversa? Vale a dire; Build X dipende da Build B, quindi vuoi che un parametro specificato per X sia disponibile per B? Mi piacerebbe farlo per le regole di checkout, per assicurarmi che il ramo corretto sia costruito. Se scopro come, lo posterò qui .. – keithl8041

+0

Presumo che tu voglia che l'ordine sia: distribuisci il database e poi costruisci e distribuisca l'app web? Quando dici di sovrascrivere il parametro di costruzione, da dove viene il valore? È qualcosa che vuoi inserire manualmente nella GUI di TeamCity o è qualcosa che desideri sovrascrivere a livello di programmazione? –

+0

È possibile utilizzare l'API TeamCity per il kickoff delle build con determinati parametri. Penso che potresti ottenere la funzionalità desiderata usando quello. – lyoung

risposta

0

Aggiornamento: Questa risposta è rilevante solo per TeamCity v8 o più anziani

ho provato io stesso, ma purtroppo ho il sospetto che non è attualmente possibile.

La documentazione Build Dependencies Setup sostiene questo:

Quando costruire un dipende dalla costruzione B, è possibile passare oggetti di costruzione B per costruire una, vale a dire le proprietà può essere passato solo nella direzione di catena di accumulo flusso e non viceversa.

L'(generalmente sensibile) motivo penso proprio come questo è per i seguenti motivi:

  • La configurazione di generazione dipendente potrebbe essere una dipendenza di uno solo degli altri configurazione di generazione.

Pensateci: se due genitori vogliono passare i loro parametri (diversi) per la costruzione dipendente, cosa ottengono per l ' "ultima generazione corretta"? Teoricamente TeamCity potrebbe verificare se le proprietà per l'ultima build corrispondono a quelle necessarie (ricostruzione in altro modo). Ma anche in questo caso si finirebbe con una brutta storia di build di build per tutti i diversi ambienti. Questo in realtà non si adatta al concetto di configurazioni di build.

Il modo migliore per riutilizzare le configurazioni di generazione è di modellarle e quindi creare più proprietà di impostazione dei progetti a livello di progetto in modo che siano disponibili per tutte le configurazioni di build contenute.

In definitiva, il consiglio migliore potrebbe essere quello di riconsiderare se è davvero necessario utilizzare due configurazioni di build per il proprio progetto. La best practice è di ridurre al minimo il numero di configurazioni di build e di costruire passi: inserire la logica di compilazione nei propri script il più possibile.

+0

Questo è ora possibile in TeamCity 9. Vedere sotto risposta di ocroquette. – SunshinyDoyle

+0

Lasciando la risposta qui perché potrebbe ancora essere utile per coloro che non sono ancora passati a TC9 – Schneider

8

Secondo il documentation, è ora possibile in TeamCity 9:

imperative Dipendenze Proprietà

Dal TeamCity 9.0, esiste la possibilità di sovrascrivere i parametri delle dipendenze ridefinendoli nella build dipendente. Ad esempio, la configurazione di build A dipende da B e B dipende da C; Una ha la capacità di modificare i parametri in una delle sue dipendenze utilizzando il seguente formato: reverse.dep ..

E 'anche possibile cambiare il parametro in tutte le dipendenze in una volta:. reverse.dep *.

Le proprietà delle dipendenze da sovrascrivere possono essere specificate nei nomi dei parametri della build dipendente A, nella finestra di dialogo di build personalizzata o tramite i parametri di configurazione build.

L'inserimento di un nuovo parametro nella compilazione sostituisce l'opzione "Non eseguire una nuova build se è disponibile un'opzione di dipendenza" e può generare una nuova build se il parametro è impostato su un valore non predefinito.

+1

Puoi fornire un esempio di utilizzo? – QtRoS

Problemi correlati