Entendendo os pipelines do DevSecOps
Os vários pipelines fornecidos nas cadeias de ferramentas de integração contínua e implantação contínua de referência baseiam-se no suporte Continuous Delivery para Tekton Pipelines. Para saber mais sobre pipelines Tekton, consulte Trabalhando com pipelines Tekton.
Você não precisa ser um especialista em Tekton para usar os pipelines de referência. Os pipelines de referência são predefinidos com uma estrutura básica que inclui espaços reservados para scripts personalizados para etapas como compilações, testes automatizados e implementação. Os usuários podem declarar scripts customizados para seus próprios pipelines e configurar valores para várias propriedades de ambiente de um pipeline específico.
Tipos de status do pipeline
Em determinados pontos, é importante entender as condições de erro ou de falha para um pipeline de referência. Do ponto de vista conceitual, uma execução de tarefa em um pipeline em conformidade pode resultar em dois tipos diferentes de status:
- Status de conformidade: o estado de aprovação ou de falha de uma verificação
someou de um conjunto de verificações. - Status do pipeline: o estado de êxito ou de falha de uma execução de tarefa em si.
Uma falha em um teste, uma varredura ou uma verificação não causa a falha ou interrupção do pipeline em si; a tarefa que executa o teste é marcada como verde.
Do ponto de vista de conformidade, o resultado do teste de unidade não afeta a implementação. É possível implementar artefatos que tenham verificações com falha, mas o processo mantém evidências sobre essa atividade. O fluxo de conformidade
não impede a liberação de uma correção quando há uma situação de indisponibilidade. Por exemplo, quando uma execução de uma tarefa de teste de unidade que encontrou testes com falha é marcada como verde, isso significa que The task ran successfully and found the following issues.
Caso uma tarefa falhe com um status vermelho, isso ocorre porque o pipeline não pode, ou não deve, continuar. As condições de exemplo de falha incluem:
- Erros em uma tarefa ou em um pipeline.
- Algum evento ocorrido torna desnecessário dar continuidade à execução do pipeline.
Por exemplo, a falha de uma construção de artefato durante a integração contínua é contrária à própria finalidade do processo de integração contínua.
Para manter a sincronização entre o status final do pipeline e os resultados de conformidade, utiliza-se uma tarefa no final do pipeline, que verifica os resultados de conformidade e configura o status de execução do pipeline como red ou green.
Pipelines de solicitações pull
O pipeline de solicitações pull executa verificações de status de conformidade pré-configuradas em uma solicitação pull para o repositório (repo) de aplicativo (app) especificado. Essas verificações de status podem impedir que você faça o merge
do pull request no branch ativo padrão, geralmente master, se as verificações não forem bem-sucedidas. Abra ou atualize uma pull request no branch ativo padrão para acionar a execução do pipeline de pull request. Os usuários podem
executar sua própria configuração para o pipeline e os testes em estágios customizados. Para obter mais informações sobre o pipeline de solicitações pull, consulte Pipeline de solicitações pull.
Pipeline de integração contínua
O pipeline de integração contínua constrói os artefatos implementáveis a partir dos repositórios (repos) do aplicativo (app). Antes de construir os artefatos, o pipeline verifica se o código foi escaneado e testado, como é feito para o processamento de solicitações pull. Os artefatos construídos também são escaneados em busca de vulnerabilidades e são inscritos no pipeline antes de serem considerados prontos para liberação e implementação no inventário. Ao contrário do pipeline de solicitações pull, o pipeline de integração contínua coleta artefatos de evidências e de resultados em cada estágio da construção, como as fases de teste, varredura e assinatura. Esses dados estão associados aos artefatos de construção e podem ser acompanhados pelo processo de implementação e gerenciamento de mudanças. Para obter mais informações sobre o pipeline de integração contínua, consulte Pipeline de integração contínua.
Pipeline de implementação contínua
O pipeline de implantação contínua gera todas as evidências e o conteúdo do resumo da solicitação de alteração. O pipeline implementa os artefatos de construção em um ambiente específico, como preparação ou produção e, em seguida, coleta, cria e faz upload de todos os arquivos de log, evidências e artefatos existentes, colocando-os no armazenamento de evidências. Para obter mais informações sobre o pipeline de implementação contínua, consulte Gasoduto de implementação contínua.
Pipeline de conformidade contínua
O pipeline de conformidade contínua varre periodicamente os artefatos implementados e seus repositórios de origem para vulnerabilidades mais recentes desde que os artefatos foram implementados em produção. O pipeline também ajuda a rastrear automaticamente os desvios com a data de vencimento e oferece reconhecimento do aplicativo. Para obter mais informações, consulte Pipeline de conformidade contínua.
Fluxo de trabalho de inventário
Consulte Evidências.
Consulte Inventário.
Gravações de integração contínua no inventário
O inventário contém várias ramificações, incluindo a ramificação padrão. Essas ramificações podem representar estágios de implementação, ambientes ou regiões, ou ainda, uma combinação dessas opções, dependendo da configuração e do uso.
O branch padrão é preenchido a partir de compilações de integração contínua. O último commit no destino, como staging, contém uma tag que mostra que esta foi a última implementação concluída.
Se o branch padrão do inventário for alterado para um branch diferente, você deverá rebase os commits do branch padrão anterior para o novo branch padrão, a fim de tornar o histórico de commits Git linear.
Promoção
Para fazer uma promoção para uma ramificação de destino, crie uma solicitação pull. O conteúdo da solicitação pull preenche os campos da solicitação de mudança. Após a revisão, é possível mesclar a solicitação pull de promoção.
Delta e implementação
Após a mesclagem da solicitação pull da promoção, é possível iniciar o pipeline de implementação. O delta de implementação é a diferença entre o conteúdo da última implementação concluída e da implementação atual. O delta de implementação lista os itens de inventário que estão sendo implementados.
Conclusão
Após a conclusão da implementação, a tag latest é movida para frente.
Durante o acionador dev-mode, as tags não serão avançadas, o propósito do acionador dev-mode é exclusivamente para testar o pipeline de CD e não é recomendado para uso no ambiente de produção.
Promoção para outros ambientes
As promoções e implementações podem ser feitas entre quaisquer ramificações.
Cenário de inventário
No estado de implementação atual está o conteúdo a ser implementado em um ambiente. Cada commit promovido nas ramificações de destino possui como tag o Pipeline Run ID e o Change Request ID relevantes. Alguns commits podem ter várias tags, como quando uma implementação com falha é executada novamente. No inventário, são mantidas todas as informações necessárias para reproduzir as implementações.
Configuração de destino único com várias regiões
A configuração de destino único com várias regiões é uma iteração desse modelo, em que são introduzidas várias tags latest para um único ambiente de destino. Esse modelo permite que vários pipelines contínuos funcionem no mesmo
destino para diferentes tipos de casos de uso.
Por exemplo, é possível usar o mesmo ambiente de destino para várias regiões (como us-south e eu-de) no ambiente de destino de produção e na ramificação de inventário.
Para especificar a região de implementação pelo pipeline de implementação contínua, use o parâmetro region. Para obter mais informações sobre esse parâmetro, consulte Parâmetros de pipeline de implementação contínua.
As equipes não precisam configurar uma filial diferente para cada região, como us-south-prod e eu-de-prod, e executar a promoção de forma redundante. Em vez disso, especifique esses destinos adicionais para a mesma
ramificação do inventário e, em seguida, utilize-os como tags Git.
Nessa configuração, o ramo de produção tem várias tags latest no mesmo ramo, como us-south_prod_latest e eu-de_prod_latest, e cada pipeline de implantação contínua responsável por cada região pode usar
essas tags para implantar.
Cenário de exemplo
Um conjunto de mudanças que eventualmente serão implementadas em todos os lugares, pode ser liberado primeiro para uma região específica. Em seguida, você pode implementar gradualmente esse conjunto de alterações em outras regiões usando pipelines de implementação contínua direcionados a essas regiões.