Hai bisogno di una build prima di poterla infrangere. Stai già usando Jenkins? Grande! Ora aggiungi un box Linux come slave di build e crea una build per Linux che rispecchia le build di Windows.
Nota che i tuoi requisiti - la rottura deve essere impedita , ma non vuoi che i commit gated - siano un po 'contraddittori. Ma il test non deve essere tutto o niente. Invece, avvisare gli sviluppatori della rottura è ancora utile quando accade dopo il fatto. Possono quindi correggere la rottura.
Sfortunatamente, funziona solo se
- si inizia con una build che funziona su Linux e
- ogni volta che il build si rompe, è corretto prima vengono fatti altri commit.
Se gli sviluppatori possono impegnarsi in una build scadente, impareranno a ignorare il risultato della build di Linux, rendendolo quasi inutile.
È anche nel tuo interesse abilitare test facili su Linux prima di commetterli, in quanto ciò può evitare molte rotture. Per esempio. potrebbero essere macchine virtuali o accessi SSH preconfigurati con un ambiente di sviluppo o uno strumento per attivare processi personalizzati su Jenkins. Questo è diverso da forzare gli sviluppatori per costruire su Linux. Al contrario, possono soppesare i rischi se una modifica deve essere testata dalla build di Jenkins dopo il commit o se la modifica è più rischiosa e deve essere prima verificata manualmente. Se utilizzare l'ambiente Linux è sufficientemente conveniente, questo è un gioco da ragazzi.
Mentre stai ancora effettuando la transizione al supporto multipiattaforma, è meglio evitare gli avvisi automatici e lasciare che un team separato esegua il porting utilizzando il proprio flusso di lavoro. Ogni volta che raggiungono qualche sotto-obiettivo, è sensato aggiungere immediatamente questo come un lavoro di Jenkins per evitare regressioni future. Per esempio. i passaggi intermedi potrebbero essere che un componente può essere compilato su Linux o che la build funzioni utilizzando MinGW (vale a dire, ancora su Windows ma con un compilatore non MSVC) o che sia possibile attivare un avviso aggiuntivo.
Naturalmente, niente di tutto questo è una soluzione completamente tecnica. Gli strumenti da soli non possono risolvere i tuoi problemi, ma possono aiutare notificando gli sviluppatori sui problemi che si presentano. Più importante degli strumenti è che gli sviluppatori usano i loro strumenti (perché li trovano veramente utili), e che tu hai qualcuno che può costruire e configurare gli strumenti che gli sviluppatori in realtà hanno bisogno.