Il mondo del software incorporato utilizza spesso flag di build-time, nel codice dell'app stesso ( #define
/ #ifdef
istruzioni, ad esempio) e / o nei file di configurazione degli strumenti di costruzione ( makefile
ad esempio,).
I flag di costruzione possono essere utilizzati, in modo simile, non solo per le funzionalità, ma anche per tutti i tipi di refactoring del codice, migrazioni, supporto per il debug, ecc.). Consentono di eseguire modifiche parziali o non verificate nel ramo di integrazione senza interrompere la build o causare regressioni nelle funzionalità / progetti già funzionanti nel ramo. Eccellente per gestire le correzioni dei punti insieme a cambiamenti di avanzamento grandi / rischiosi / lenti (che altrimenti richiederebbero un ramo di lunga durata) in una modalità di integrazione continua.
Ma oltre a verificare il codice di filiale già esistente per le regressioni, è anche possibile eseguire verifiche di avanzamento / stabilità del nuovo codice. Per questo è necessario attivare / disattivare i flag di build-time.
Un modo per attivare / disattivare i flag sarebbe quello di utilizzare, in una pipeline di verifica separata del sistema CI dello stesso ramo (se ha il supporto per tale funzionalità), un file patch che attiva / disattiva il flag - da applicare a un'area di lavoro separata prima del costruire. Un diverso set di artefatti verrebbe creato in questo spazio di lavoro e quindi verificato.
In alternativa, è possibile estrarre un ramo di funzionalità di lunga durata dal ramo di integrazione principale, ma l'unica modifica in questo ramo di funzionalità sarebbe la bandiera attivata / disattivata. Grazie a questa piccola modifica, il ramo delle funzionalità può essere sincronizzato automaticamente in modo estremamente rapido, praticamente oscurando molto da vicino il ramo di integrazione principale. Un'esecuzione CI separata su questo ramo non avrebbe più bisogno di un file patch preliminare. Sarebbe banale portare con sé tale ramo di funzionalità anche per un lungo periodo di tempo.
Potrebbe anche essere possibile creare, nel ramo di integrazione principale, nuovi artefatti di costruzione che sarebbero in realtà solo cloni degli artefatti di costruzione esistenti ma con le bandiere attivate. In questo modo né il file di patch preliminare né il ramo funzionalità sarebbero necessari per verificare il nuovo codice, proprio nel ramo principale.