by the time something gets committed to master
Normalmente ho impostato il mio CI per l'esecuzione su ogni singolo commit. I rami non vengono uniti in master finché il ramo non è stato testato. Se ti stai affidando all'esecuzione di test su master, allora viene aperta una finestra in cui la build deve essere interrotta.
L'esecuzione dei test su una macchina della CI riguarda risultati riproducibili. Poiché il server CI ha un ambiente pulito noto estratto dal tuo VCS, sai che i risultati del test sono corretti. Quando esegui localmente, potresti dimenticarti di eseguire il commit del codice necessario per il loro passaggio o di avere codice non eseguito che li faccia passare quando dovrebbero fallire.
Può anche far risparmiare tempo agli sviluppatori eseguendo suite diverse in parallelo, specialmente se alcuni sono test lenti e multi-minuto che non saranno probabilmente eseguiti in locale dopo ogni modifica.
Al mio attuale lavoro, la nostra implementazione di produzione è controllata su CI passando tutti i test. Gli script di distribuzione impediranno la distribuzione a meno che non stiano passando. Ciò rende impossibile dimenticarsi accidentalmente di eseguirli.
Anche l'essere parte del flusso di lavoro fa parte degli sviluppatori. Come sviluppatore, di solito esegui un linter, un analizzatore statico, un test unitario, una copertura del codice e un test di integrazione per ogni singola modifica? CI può, in modo completamente automatico e senza bisogno di pensarci, riducendo la fatica decisionale.