Un trigger "Dipendenza istantanea" e "Generazione completata" sono molto diversi. una è fondamentalmente un'operazione "push" mentre l'altra è un'operazione "pull", rispettivamente.
Impostazione 1: Se devo costruire configurazioni A e B dove B ha un trigger "Finito costruire" su A, quindi il comportamento opposto è vero. Attivazione B non avrà alcun effetto sul Un, ma innescando Un sarà effettivamente innescare B una volta terminato.
Setup 2: Se ho la stessa identica configurazione, ma invece B ha una dipendenza istantanea sul A, allora ogni volta che B viene attivato, Un verrà eseguito prima, o almeno di controllo per vedere se è necessario eseguire, prima di eseguire B. SE viene attivato solo A, quindi B non verrà attivato.
Impostazione 3: Impostazione 3 è leggermente diversa perché non dipende solo sul grilletto "Finito Build" o la dipendenza istantanea. ANCHE dipende dal trigger iniziale (VCS, programmato o qualsiasi altra cosa). per esempio, se si dispone di un trigger VCS su A, e B ha sia il grilletto "Finito Costruire" e "istantanea della dipendenza", a A, poi si arriva in modo efficace il comportamento del programma di installazione 1. A sarà attivati in caso di modifiche VCS e B verrà attivato DOPO A (utilizzando la stessa istantanea).In effetti, senza la configurazione dell'istantanea, non è garantito che lo B utilizzi la stessa istantanea di A, che potrebbe essere o meno ciò che si desidera.
Quindi, in generale, quando si desidera un processo di attivazione "da sinistra a destra", si utilizzano ENTRAMBI i trigger di generazione terminati e le dipendenze dello snapshot per garantire la santità del materiale di costruzione.
Se, d'altra parte, si ha il trigger iniziale (VCS o pianificata o qualsiasi altra cosa) di installazione sul B, quindi avere il grilletto "costruire finito" è in qualche modo annullato, perché B sarà sempre essere attivato prima (ma non eseguito), quindi attiverà tutte le sue dipendenze e verrà eseguito automaticamente al termine.
speranza che aiuti. Grazie!
Grazie per la spiegazione dettagliata. Nella mia situazione, la condivisione di parametri e risorse scarse sono molto rari, quindi userò probabilmente solo la dipendenza da snapshot (setup 2), e userò la combo (setup 3) se c'è un comportamento specifico richiesto con diverse radici VCS. –
Puoi chiarire nel setup 3, A viene eseguito due volte se la dipendenza dello snapshop ha l'opzione "Non eseguire una nuova build se ce n'è una adatta" ** UNCHECKED **? come in ... qualcosa innesca A, quando A completa, _Finitura Build_ si attiva e tenta di mettere B in coda, POI _Snapshot Dependency_ prende il comando e mette A in coda ancora prima che B sia in coda. NON mette un altro A in coda quando ho provato questa configurazione, ma ho pensato in teoria, dovrebbe. TeamCity ha una logica interna per ignorare il passo di accodamento della dipendenza dello snapshot se esiste il trigger di compilazione finito? –
Anche con questa opzione deselezionata, non credo che A debba essere reinserito in coda. Sarebbe terribilmente poco pratico e non riesco a pensare a nessuno che possa desiderare quel comportamento. (Suppongo che tu non voglia questo comportamento, ti stai solo chiedendo cosa faccia questa opzione se non * quella *.) Ciò che questa opzione, credo, è questa: calcio A, lascia B trigger. Entrambi hanno corso una volta. Ora attiva manualmente solo B, senza modifiche al codice dall'ultima build di B. Dovrebbe quel trigger A di nuovo o no? Ecco dove arriva questa opzione. – sferencik