Integração contínua - crie Debug e Release sempre?

8

É prática padrão ao configurar um servidor de Integração Contínua para criar uma versão Debug and Release de cada projeto? Na maioria das vezes, os desenvolvedores codificam com um conjunto de configurações do projeto no modo Debug ativado e pode haver diferentes configurações do caminho da biblioteca, definições do compilador ou outros itens configurados de maneira diferente entre o Debug / Release, o que os faria agir de maneira diferente.

Eu configurei meu servidor de IC para compilar a Depuração e a Liberação de cada projeto e estou me perguntando se estou pensando demais nele. Minha suposição é que eu farei isso desde que obtenha feedback rápido e, uma vez que isso aconteça, levarei o Release para uma compilação noturna, talvez. Existe uma maneira 'padrão' de abordar isso?

Darian Miller
fonte
programmers.stackexchange.com/questions/55946/… é uma pergunta semelhante que pode valer a pena revisar essas respostas.
JB rei
3
Se qualquer coisa que eu ir por outro caminho - se você quer deixar cair um, então você precisa estar construindo a liberação versão cada vez que não a versão de depuração - já que é a versão mais provável de ser quebrado ...
Murph
Eu assumiria a versão Release como a única a ser criada. A questão é também criar o Debug.
precisa

Respostas:

9

Construir as duas configurações não prejudicará, mas se você tiver que escolher (especialmente devido a restrições de tempo de construção), crie a configuração da versão.

Em última análise, você deseja criar, testar, empacotar e implantar a configuração que seus clientes usarão e encontrar quaisquer problemas antes dela.

Bernard
fonte
8

Liberar apenas.

Suponha que os desenvolvedores façam builds de depuração de qualquer maneira e os piores erros sejam os 'funciona em depuração'. Quanto mais rápido você puder identificá-las e restringir as alterações que possam ter causado a eles, mais felizes serão todos!

Martin Beckett
fonte
Se você tiver apenas um componente, sim. Se você tiver vários componentes, existe o risco de que ninguém tente um componente específico por algum tempo e ele quebre, de modo que você precisa, pelo menos, de compilar todas as noites em todas as configurações.
Jan Hudec
1
@ JanHudec - qual é o valor de um teste de uma compilação de depuração? Se a versão funcionar, mas a depuração, isso não é um bug ou apenas uma consequência da depuração?
22820 Martin -ketkett
@MartinBeckett: É um grande incômodo para a próxima pessoa que precisará depurar um problema real na versão de depuração. Especialmente quando isso acontece algumas semanas depois, o que é bem possível se você tiver vários componentes.
precisa saber é o seguinte
4

Eu recomendo fortemente criar e testar ambos, se isso puder ser feito em uma noite.

  • você pode detectar alguns heisenbugs
  • você garante que seu cliente obtenha o comportamento testado e validado
Simon Bergot
fonte
1

Você deve construir tudo para o qual haja alguma chance de que não seja tentado por ninguém por algum tempo. O que significa que, se você tiver apenas um destino de construção, não precisará depurar em integração contínua, porque os desenvolvedores perceberão rapidamente. Porém, na maioria das vezes, existem vários componentes e os componentes que não estão sendo trabalhados no momento não serão criados pelos desenvolvedores, mas ainda poderão ser interrompidos por alterações no código comum. Nesses casos, você precisa criar todas as configurações para não encontrar a construção danificada quando precisar tocar nesses componentes.

Agora, muitas vezes, a criação de tudo em todas as configurações leva muito tempo; portanto, você não pode construir tudo após cada confirmação. Nesse caso, faça as configurações de liberação dos componentes mais importantes todas as vezes e adicione uma compilação noturna de tudo.

Atualmente, trabalho no projeto, onde temos a construção contínua, que controla o controle de versão a cada 10 minutos e mesmo que apenas as configurações selecionadas ainda possam demorar mais de uma hora após confirmações maiores. Do que temos a compilação noturna, que cria todos os componentes em todas as configurações e sempre faz uma compilação limpa, que leva cerca de 5 horas. Além disso, temos uma compilação semanal, que cria versões em todas as variantes personalizadas e leva mais do que um dia inteiro.

Jan Hudec
fonte
0

Depende do seu projeto. No meu projeto atual, construímos apenas depuração (e executamos testes de unidade) em cada confirmação, enquanto construímos a versão de lançamento como parte da "implantação de implantação".

Na última empresa em que trabalhei, tivemos alguns problemas com a versão de lançamento, trabalhando de maneira um pouco diferente, então criamos depuração e lançamento em todos os commit e executamos testes de unidade em ambos.

Dror Helper
fonte
4
e quando a sua perceber que a liberação é quebrado apenas antes da implantação, você tem duas horas para UNFUCK a situação
Simon Bergot