O mundo do software incorporado geralmente usa sinalizadores de tempo de construção, no próprio código do aplicativo ( instruções #define
/ #ifdef
, por exemplo) e / ou nos arquivos de configuração das ferramentas de construção ( makefile
por exemplo).
Os sinalizadores de compilação podem ser usados, de maneira semelhante, não apenas para recursos, mas também para todos os tipos de refatoração de código, migrações, suporte a depuração etc.). Eles permitem confirmar no ramo de integração alterações parciais ou não verificadas sem interromper a construção ou causar regressões nos recursos / projetos que já estão trabalhando no ramo. Excelente para correções de pontos de manipulação, juntamente com alterações de progresso grandes / arriscadas / lentas (que de outra forma exigiriam uma ramificação de vida longa) de maneira contínua.
Mas, além de verificar o código de ramificação já existente para regressões, também é possível executar verificações de progresso / estabilidade do novo código. Para isso, os sinalizadores de tempo de construção precisam ser alternados.
Uma maneira de alternar os sinalizadores seria usar, em um pipeline de verificação separado do sistema de IC da mesma ramificação (se houver suporte para essa funcionalidade), um arquivo de patch alternando o sinalizador - para ser aplicado a um espaço de trabalho separado antes do Construir. Um conjunto diferente de artefatos seria construído nesse espaço de trabalho e depois verificado.
Como alternativa, um ramo de recurso de longa duração pode ser extraído do ramo de integração principal, mas a única alteração nesse ramo de recurso seria o sinalizador alternado. Devido a essa pequena alteração, o ramo de recursos pode ser sincronizado automaticamente extremamente rápido - praticamente sombreando muito de perto o principal ramo de integração. Uma execução de IC separada nessa ramificação não precisaria mais de um patchfile preliminar. Seria trivial transportar esse ramo de recursos, mesmo por um longo período de tempo.
Também pode ser possível criar, no ramo de integração principal, novos artefatos de construção que realmente seriam apenas clones dos artefatos de construção existentes, mas com os sinalizadores alternados. Dessa forma, nem o arquivo de correção preliminar nem o ramo de recursos seriam necessários para verificar o novo código, diretamente no ramo principal.