Dalle mie osservazioni su come funziona TeamCity, ho notato che le condizioni di errore di build vengono valutate dopo che tutti i passaggi sono stati eseguiti. Questo è abbastanza fastidioso perché non posso avere un passaggio che non si eseguirà se si sono verificate alcune delle condizioni di errore di build.Il passaggio TeamCity deve essere saltato in condizione di guasto di build
Non mi riferisco alle condizioni di errore di compilazione comuni, ad esempio "almeno un test non è riuscito". Mi riferisco alle condizioni di errore aggiunte manualmente come nel caso delle modifiche alle metriche.
Quando controllo il log di compilazione, vedo chiaramente che tutti i passaggi sono stati eseguiti e solo alla fine valuta le condizioni di errore di build e registra i rispettivi errori, se presenti. Ma è troppo tardi perché il passaggio condizionale (che doveva fallire in base a "Esegui solo se lo stato della build ha avuto successo") è già stato eseguito.
Domanda: come posso ottenere questo?
Come si può vedere da quanto sopra, ho già provato ad avere un passaggio condizionale e ho aggiunto la condizione di errore di compilazione, ma non è possibile ottenere il risultato desiderato.
addizione per chiarezza:
Fondamentalmente, ho un passo che distribuisce l'applicazione. Tuttavia, la mia aspettativa è che non dovrei distribuire se sono soddisfatte le condizioni di fallimento della build. Esempio di condizioni di errore di build che ho è in modifica delle metriche. Ovviamente, posso esprimere come condizione di fallimento della build, e posso avere la fase di build che fallisce nel caso in cui lo stato di build non abbia successo. Tuttavia, sembra che non sia come si comporterà il passo di costruzione, quindi sono perplesso (ho pensato che fosse lo scopo della condizione nella fase di costruzione). Cosa mi manca?
Quindi, si sta suggerendo che il passaggio con unit test dovrebbe essere eseguito con codice diverso da zero nel caso in cui le condizioni di errore di compilazione siano soddisfatte? ma come posso dire al punto di restituire un codice diverso da zero in base alle condizioni di fallimento della build? – Tengiz
Non in base alle condizioni di errore di compilazione: se si eseguono test di unità e un test di unità non riesce, il passaggio che esegue test di unità dovrebbe restituire un codice di uscita diverso da zero. Potrebbe essere un po 'più di informazioni su come si stanno eseguendo i test unitari sarà utile. Ad esempio, se si utilizza il plug-in di Teamcity NUnit per eseguire i test di Nunit, esso esce con un codice di uscita diverso da zero se un test fallisce –
Ho ottenuto il tuo punto. Ma i test unitari non hanno esito negativo, solo la condizione di fallimento di build è vera. Ciò significa che sono stati superati tutti i test unitari, ma la copertura è diminuita del N percento. Ho una condizione di errore di compilazione che controlla se la copertura è stata interrotta e, in caso contrario, la build verrà contrassegnata come non riuscita. Tuttavia, i test unitari non falliscono. Alla fine della compilazione, viene contrassegnato come non riuscito, quindi la condizione di errore di compilazione funziona correttamente. Ho solo bisogno di saltare l'ultimo passaggio (distribuzione) se la copertura è scesa (significa se la condizione di errore di compilazione è soddisfatta). – Tengiz