Minha empresa está integrando o CI / CD; até agora, implementamos o CI pelo que entendi. Atualmente, quando um desenvolvedor envia código ao nosso repositório git, o pipeline do CI é executado.
Atualmente, nosso pipeline de IC inclui a construção do projeto e a análise estática do código para garantir que ele atenda aos nossos padrões de codificação. A seguir, implementaremos os testes. A compilação e a análise estática do código levam cerca de 3 minutos no momento. Pelo que li, corrigir problemas imediatamente é fundamental para o CI / CD. Espero que, quando adicionarmos testes de unidade, o pipeline possa levar cerca de 10 minutos para ser executado.
Portanto, minha pergunta é quando um desenvolvedor faz uma solicitação de pull / mesclagem, deve aguardar a conclusão do pipeline do IC ou simplesmente passar para a próxima tarefa e voltar para corrigir os problemas do pipeline, se existirem? Ou eles deveriam sentar e assistir o oleoduto correr?
fonte
Eu recomendo que você tente o seu melhor para garantir que o pipeline seja inferior a 10 minutos. Você pode executar seus testes em paralelo para ativar isso. Como jonas respondeu, eles podem gastar tempo criando uma solicitação de recebimento (enquanto o pipeline está em execução).
A troca de contexto é ruim para a produtividade; portanto, em vez de pegar outra tarefa, recomendo que o desenvolvedor use esse tempo para trabalhar em qualquer outra coisa relacionada à alteração que ele acabou de fazer. Talvez haja alguma documentação que possa ser atualizada relacionada a isso. Se é uma característica notável, ele pode criar um pequeno gif mostrando como trabalhar com ela. Mesmo olhando para a alteração de código novamente, pode ajudá-los a pensar em como poderiam melhorá-la na próxima vez. Esse tempo também pode ser usado na revisão de outros desenvolvedores de solicitações pull e alterações de código.
Se eles começarem a desenvolver outro recurso nesses 10 minutos, é provável que demore mais de 10 minutos antes que eles voltem a ele e o trabalho seja menos atualizado em sua mente. Se o IC falhar, será mais difícil para eles lembrar o que poderia ter dado errado e corrigir o código.
fonte
Ok, então vamos supor que você tenha a ferramenta de controle de versão como a ferramenta Git e CI Jenkins. Portanto, o Dev cria um ramo de recurso para um problema. Você possui um pipeline de várias filiais ou um fluxo de trabalho em sua ferramenta de IC, que detecta essa ramificação de recurso na próxima varredura e executa as etapas de IC.
Portanto, as coisas que devem ser garantidas são:
Antes de aumentar PR / MR, o trabalho do IC é verde. Se não estiver verde, o PR / MR não deve ser aumentado. Obviamente, o desenvolvedor pode executar outras tarefas e, em seguida, voltar e corrigir o problema nessa tarefa, que é a sua escolha, dependendo da prioridade da tarefa. Você pode controlar o aumento de qualquer PR, verificando seus parâmetros de IC (se você não confia tanto no seu desenvolvedor e eles aumentam continuamente os PRs para versões quebradas)
Depois que o PR é gerado, um revisor de código revisará e mesclará se tudo estiver OK. O revisor de código pode ser qualquer outro desenvolvedor. Sua responsabilidade é revisar o código, verificar se ele está dentro dos critérios de "Definição de Concluído". DoD é principalmente um termo ágil, mas ágil e DevOps andam de mãos dadas.
Depois que o código é mesclado, o IC da ramificação principal deve ficar verde. Caso contrário, o código deve ser revertido e o problema deve ser corrigido, porque geralmente a ramificação principal também é implantada nos ambientes e não revertendo significa que todo o ambiente será quebrado.
Obviamente, as ações de pós-construção notificarão o comunicador de que Hey, você quebrou a compilação, para que os Devs possam executar suas outras tarefas, receberão emails de qualquer maneira.
fonte