Skip to content

Roadmap de Produtos

Um roadmap de produto é um instrumento estratégico que alinha visão, planejamento e execução, garantindo que todas as partes interessadas (stakeholders) compreendam o direcionamento do produto. Sua elaboração é essencial por vários motivos:

  • Alinhamento Estratégico e de Prioridades
  • Comunicação Transparente com Stakeholders
  • Adaptação a Mudanças e Riscos
  • Otimização de Recursos e Tempo
  • Mensuração de Resultados

Um roadmap de produto não é apenas um cronograma, mas uma ferramenta dinâmica que:

  • Alinha times em torno de objetivos comuns.
  • Comunica o plano de forma visual e acessível.
  • Adapta-se a mudanças sem perder o foco estratégico.

Sem ele, a gestão do produto fica reativa, fragmentada e sujeita a falhas de execução. Portanto, sua elaboração é não apenas necessária, mas crítica para o sucesso sustentável.

Definir Formato (Tático vs. Estratégico)

Roadmap Estratégico (Longo Prazo) Roadmap Tático (Curto Prazo)
Foco em objetivos macro (ex: expansão para novos mercados). Foco em entregas imediatas (ex: lançamento de feature X).
Escopo flexível, sem prazos rígidos. Cronograma detalhado (sprints, milestones).
Público-alvo: liderança e investidores. Público-alvo: equipes de desenvolvimento e operação.

Matriz de Priorização

Iniciativa Impacto (1-5) Esforço (1-5) Alinhamento Estratégico Pontuação
Integrar API 5 3 4 12 (5+3+4)
Redesign da UI 4 5 3 12 (4+5+3)

Exemplo Estratégico 202X

Objetivo Principal: [Ex: Liderança de mercado em X]
Trimestre Iniciativa Métrica de Sucesso Dados de Apoio
Q1 Lançamento do Módulo A +15% de retenção Pesquisa com 200 clientes
Q2 Integração com Plataforma B 20 parceiros onboardados Benchmarking competitivo
Roadmap Tático - Q1 202X
Sprint Tarefa Responsável Status
1 Protótipo da Feature X Time Dev Em andamento
2 Testes de Usabilidade UX Planejado

Observação: Este modelo garante clareza, adaptabilidade e decisões baseadas em dados, essenciais para um produto competitivo.

Fato Projeto Atualização do e-Business Suite
gantt
    dateFormat  YYYY-MM-DD
    title       Clonagem
    excludes    weekends
    %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".)

section Desenvolvimento
Q_01/2025                               :done,   DEV20241,2024-12-27,2025-03-28
DBA_01/2025                             :DBA1,2024-12-27, 5d
Q_02/2025                               :done,   DEV20252,2025-04-02,2025-07-04
DBA_02/2025                             :DBA2,2025-04-02, 5d
Q_03/2025                               :done,   DEV20253,2025-07-09,2025-10-10
DBA_03/2025                             :DBA3,2025-07-09, 5d
Q_04/2026                               :done,   DEV20254,2025-10-15,2026-01-16
DBA_04/2026                             :DBA4,2025-10-15, 5d
Q_01/2026                               :done,   DEV20261,2026-01-21,2026-04-24
DBA_01/2026                             :DBA5,2026-01-21, 5d
Q_02/2026                               :done,   DEV20262,2026-04-29,2026-07-31
DBA_02/2026                             :DBA6,2026-04-29, 5d
Q_03/2026                               :done,   DEV20263,2026-08-05,2026-11-06
DBA_03/2026                             :DBA7,2026-08-05, 5d
Q_01/2027                               :done,   DEV20261,2026-11-11,2027-02-12
DBA_01/2027                             :DBA8,2026-11-11, 5d
Q_02/2027                               :done,   DEV20272,2027-02-17,2027-05-21
DBA_02/2027                             :DBA9,2027-02-17, 5d
section Projeto
SET/2025                                 :P1, 2025-09-08, 20d
FUNC_01/2025                             :FUNC1,2025-09-28, 30d
SET/2026                                 :P2, 2026-09-07, 20d
FUNC_02/2026                             :FUNC2,2026-09-27, 5d
section Homologação
H_01/2025                             :done,   HML20251,2025-04-02,2025-05-02
HBA_01/2025                             :HBA1,2025-04-02, 5d
H_02/2025                             :done,   HML20252,2025-05-07,2025-06-06
HBA_02/2025                             :HBA2,2025-05-07, 5d
H_03/2025                             :done,   HML20253,2025-06-11,2025-07-11
HBA_03/2025                             :HBA3,2025-06-11, 5d
H_04/2025                             :done,   HML20254,2025-07-16,2025-08-15
HBA_04/2025                             :HBA4,2025-07-16, 5d
H_05/2025                             :done,   HML20255,2025-08-20,2025-09-19
HBA_05/2025                             :HBA5,2025-08-20, 5d
H_06/2025                             :done,   HML20256,2025-09-24,2025-10-24
HBA_06/2025                             :HBA6,2025-09-24, 5d
H_07/2025                             :done,   HML20257,2025-10-29,2025-11-28
HBA_07/2025                             :HBA7,2025-10-29, 5d
H_08/2026                             :done,   HML20258,2025-12-03,2026-01-02
HBA_08/2026                             :HBA8,2025-12-03, 5d
H_09/2026                             :done,   HML20269,2026-01-07,2026-02-06
HBA_09/2026                             :HBA9,2026-01-07, 5d
H_10/2026                             :done,   HML202610,2026-02-11,2026-03-13
HBA_10/2026                             :HBA10,2026-02-11, 5d
H_11/2026                             :done,   HML202611,2026-03-18,2026-04-17
HBA_11/2026                             :HBA11,2026-03-18, 5d
H_12/2026                             :done,   HML202612,2026-04-22,2026-05-22
HBA_12/2026                             :HBA12,2026-04-22, 5d
H_13/2026                             :done,   HML202613,2026-05-27,2026-06-26
HBA_13/2026                             :HBA13,2026-05-27, 5d

Yaml

O Githun utiliza a especificação YAML 1.2 contém a gramática formal para YAML 1.2. As 211 regras gramaticais são formatadas no HTML da página da web, juntamente com muitas descrições textuais da linguagem e gramática.

A gramática usa um formato raro "Parameterized Backus-Naur form (BNF)", e alguns dos componentes da regra são apenas comentários textuais indicando o que deve acontecer.

Compreender completamente a gramática YAML é uma tarefa e tanto para a maioria dos mortais.

Autenticação e Autorização

Versionamento Semantico

Estratégias de Branches

Estratégias de implantação

Documet as Code

Infrastructure as a Code

Qualidade do Código

Manter um alto nível de qualidade de código é crucial para qualquer projeto de software, pois garante que o código seja legível, sustentável e menos propenso a erros.

Linting é uma prática comum empregada por desenvolvedores para verificar automaticamente padrões de codificação, melhores práticas e problemas potenciais em seu código.

A qualidade do código e o linting são aspectos essenciais e destacamos alguns motivos:

  • Legibilidade e Manutenibilidade: Garantir que o código siga um estilo consistente e cumpra as melhores práticas estabelecidas torna mais fácil para os membros da equipe ler, entender e manter o código.
  • Erros reduzidos: Ferramentas de linting podem detectar problemas potenciais, como erros de sintaxe, variáveis não utilizadas ou chamadas de função incorretas antes que causem problemas no aplicativo.
  • Revisões de código mais rápidas: Ao impor padrões de codificação e melhores práticas por meio do linting, os desenvolvedores podem se concentrar em aspectos mais críticos das revisões de código, como lógica e funcionalidade, em vez de gastar tempo em questões estilísticas ou de formatação.
  • Colaboração simplificada: O linting como parte do CI ajuda a garantir que todo o código contribuído para o projeto cumpra os mesmos padrões, levando a uma base de código mais coesa e consistente.

Em resumo, a qualidade do código e o linting são aspectos vitais da implementação da Integração Contínua. Eles fornecem vários benefícios, como melhor legibilidade e manutenibilidade, redução de erros, revisões de código mais rápidas, colaboração e on-boarding.

Ao selecionar cuidadosamente um linter que atenda aos requisitos do seu projeto e configurar para executá-lo automaticamente, você pode criar um pipeline de CI robusto que aplica padrões de codificação e práticas recomendadas, ao mesmo tempo em que detecta possíveis problemas no início do processo de desenvolvimento.

Segurança de Código

Testes

O teste automatizado é um componente central da Integração Contínua, pois permite que os desenvolvedores validem novas alterações de código em relação à base de código existente de forma rápida e eficiente.

Por que o teste automatizado é crucial para CI

Os testes automatizados desempenham um papel crítico no processo de CI por vários motivos:

  • Feedback mais rápido: executar testes automaticamente como parte do seu pipeline de CI fornece feedback imediato sobre o impacto de novas alterações de código, permitindo que os desenvolvedores resolvam problemas antes que se tornem problemas mais significativos.
  • Esforço manual reduzido: automatizar testes elimina a necessidade de testes manuais, liberando tempo dos desenvolvedores para se concentrarem na implementação de novos recursos e na correção de bugs.
  • Ambiente de teste consistente: testes automatizados são executados em um ambiente consistente, reduzindo a probabilidade de discrepâncias entre execuções de teste e garantindo um processo de validação confiável.
  • Colaboração aprimorada: com testes automatizados em vigor, os membros da equipe podem ter mais confiança na estabilidade da base de código, facilitando a colaboração em novos recursos e correções de bugs.

Existem vários tipos de testes que você pode incorporar em seus fluxos de trabalho de CI, dependendo dos requisitos do seu projeto e do nível de validação necessário:

  • Testes de unidade: Os testes de unidade focam em pequenos pedaços isolados de código, como funções ou classes individuais. Esses testes garantem que cada componente funcione conforme o esperado isoladamente.
  • Testes de integração: Os testes de integração examinam as interações entre diferentes componentes do seu aplicativo para garantir que eles funcionem juntos corretamente.
  • Testes Funcionais: Os testes funcionais validam a funcionalidade geral do seu aplicativo da perspectiva do usuário, geralmente por meio de interações de IU automatizadas ou chamadas de API.
  • Testes de Desempenho: Os testes de desempenho avaliam a capacidade de resposta, a escalabilidade e a estabilidade do seu aplicativo sob várias condições de carga.

Cobertura e Relatórios de código

A cobertura de código é uma métrica importante que mede a porcentagem do seu código que é executada durante o teste.

Ela ajuda os desenvolvedores a identificar áreas do código que podem não ser testadas adequadamente e exigem testes adicionais para garantir a correção e a confiabilidade.

Introdução à Cobertura de Código

A cobertura de código é uma métrica que quantifica o grau em que o código-fonte de um programa é testado por um conjunto de testes específico.

Geralmente é expressa como uma porcentagem e representa a proporção de linhas de código, ramificações, funções ou outras unidades lógicas que foram executadas durante o processo de teste.

A cobertura de código fornece insights valiosos sobre a eficácia do seu conjunto de testes, destacando áreas do código que podem não ser testadas adequadamente e potencialmente abrigando bugs ou problemas não descobertos.

Ao medir a cobertura de código, os desenvolvedores podem identificar lacunas em sua cobertura de teste e priorizar a criação de novos testes para garantir que a funcionalidade crítica seja completamente testada.

É importante observar, no entanto, que uma alta porcentagem de cobertura de código não garante a ausência de bugs ou a qualidade geral do software. É apenas um indicador da extensão em que o código foi exercido pelo conjunto de testes.

Outros fatores, como a minúcia dos próprios testes, também desempenham um papel crucial na confiabilidade e na manutenibilidade da base de código.

No contexto da Integração Contínua, a cobertura de código serve como uma métrica útil para monitorar a eficácia contínua do seu conjunto de testes e orientar melhorias na sua estratégia de testes.

Importância da cobertura de código em CI

A cobertura de código desempenha um papel crucial na Integração Contínua (CI) por vários motivos:

  • Detecção precoce de código não Testado: Ao medir regularmente a cobertura de código como parte do seu pipeline de CI, você pode identificar rapidamente áreas do código que não foram suficientemente testadas. Isso permite que os desenvolvedores abordem problemas potenciais antes que se tornem problemas mais significativos e ajuda a manter uma base de código robusta e confiável.
  • Monitoramento da eficácia do conjunto de Testes: As métricas de cobertura de código fornecem insights sobre a eficácia geral do seu conjunto de testes, garantindo que ele continue a fornecer cobertura adequada conforme a base de código evolui. Isso permite que os desenvolvedores tomem decisões informadas sobre onde concentrar seus esforços de teste, garantindo que as partes mais críticas do código sejam completamente testadas.
  • Qualidade de código Aprimorada: Um conjunto de testes abrangente, combinado com análise regular de cobertura de código, incentiva os desenvolvedores a escrever código mais limpo e modular, mais fácil de testar e manter. Isso resulta em uma base de código de maior qualidade com menos bugs e problemas.
  • Maior confiança nas alterações de Código: Ao manter um alto nível de cobertura de código, os desenvolvedores podem ter maior confiança de que suas alterações não introduzirão novos bugs ou regressões. Isso pode levar a ciclos de desenvolvimento mais rápidos e melhor colaboração entre os membros da equipe, pois há menos risco associado a fazer alterações no código.
  • Responsabilidade e Visibilidade: Integrar métricas de cobertura de código em seu pipeline de CI fornece uma medida transparente e objetiva da eficácia do conjunto de testes. Isso pode ajudar a estabelecer expectativas claras e responsabilidade para a equipe, garantindo que os testes permaneçam uma prioridade durante todo o processo de desenvolvimento.

Em resumo, a cobertura de código é um aspecto essencial da implementação da Integração Contínua, pois ajuda a garantir uma base de código confiável e de alta qualidade.

Ao medir e monitorar regularmente a cobertura de código como parte de seu pipeline de CI, você pode identificar lacunas em sua cobertura de teste, priorizar os esforços de teste e manter um conjunto de testes abrangente que minimiza o risco de bugs e regressões.

Container

Escanear Dockerfile
Assinar contêiner

Monitoramento

Segurança

Tratamento de Segredos

Dados Confidenciais

Implantação em várias plataformas

Implantando em servidores locais

A implantação local se refere à hospedagem de seu aplicativo em seus próprios servidores físicos ou virtuais, em vez de utilizar plataformas de nuvem.

Embora a implantação em servidores locais possa exigir mais gerenciamento de infraestrutura em comparação às plataformas de nuvem, ela pode oferecer maior controle sobre sua infraestrutura, segurança aprimorada e possíveis economias de custos.

Certifique-se de criar um ambiente dedicado para cada estágio do seu pipeline de implantação (desenvolvimento, preparação e produção).

Introdução

O GitHub Actions é um serviço CI/CD (Integração Contínua/Implantação Contínua) versátil, poderoso e totalmente integrado que permite automatizar várias tarefas e processos dentro do seu ciclo de vida de desenvolvimento de software.

Também abordaremos alguns casos de uso e cenários comuns em que o GitHub Actions pode agilizar seu processo de desenvolvimento de software, melhorando a eficiência e reduzindo o erro humano.

Ao final, você terá uma sólida compreensão dos conceitos fundamentais por trás do GitHub Actions e uma perspectiva clara sobre como ele pode beneficiar seus projetos de desenvolvimento.

Esta base preparará o cenário para a exploração aprofundada do GitHub Actions nos capítulos subsequentes, onde nos aprofundaremos em tópicos mais avançados e implementações práticas.

Aspecto Continuous Integration (CI) Continuous Delivery (CD) Continuous Deployment (CD)
Objetivo Integrar e testar código frequentemente para detectar erros cedo Garantir que o código esteja sempre pronto para ser liberado Automatizar a liberação do código diretamente para produção
Frequência de Deploy Nenhum deploy automático; apenas integração e testes contínuos Deploy manual para produção, mas o código está sempre pronto Deploy automático em produção após testes e validações automáticas
Ação Manual Não envolve deploy ou release manual A liberação para produção é manual ou por aprovação Nenhuma ação manual; o deploy ocorre automaticamente para produção
Ponto de Feedback Feedback imediato após integração e testes unitários Feedback contínuo com a garantia de que o código está pronto para produção Feedback rápido com liberação contínua após aprovação de testes
Exemplo de Ferramentas Jenkins, Travis CI, CircleCI, GitLab CI Jenkins, Spinnaker, GitLab CI, Bamboo Jenkins, CircleCI, GitLab CI, AWS CodePipeline
Benefício Principal Identificação precoce de problemas de integração e qualidade do código Liberação mais rápida e controlada para produção, com menos risco de falhas Entrega contínua, com mudanças sendo rapidamente disponibilizadas para os usuários
Foco Automatizar testes e integração de código Garantir que o código esteja pronto para produção a qualquer momento Automatizar todo o processo, incluindo o deploy em produção
Exemplo de Workflow Desenvolvedor envia código → Testes e integração contínuos Código aprovado → Pré-produção → Aprovação manual → Deploy em produção Código aprovado → Deploy automático em produção
sequenceDiagram
    participant Delivery as Delivery Team
    participant VersionControl as Version Control
    participant BuildTest as Build & Unit Test
    participant AutoAcceptTest as Automated Acceptance Test
    participant UserAcceptTest as User Acceptance Test
    participant Release as Release

    %% Continuous Integration (CI)
    Delivery->>VersionControl: Check-in de código
    VersionControl->>BuildTest: Trigger de Build & Unit Test
    BuildTest->>VersionControl: Feedback de Build & Unit Test (sucesso ou falha)
    alt Sucesso no Build
        BuildTest->>AutoAcceptTest: Trigger para Automated Acceptance Test
        AutoAcceptTest->>BuildTest: Feedback de Automated Acceptance Test (sucesso ou falha)
        alt Sucesso nos Testes Automatizados
            %% Continuous Delivery (CD)
            AutoAcceptTest->>UserAcceptTest: Trigger para User Acceptance Test
            UserAcceptTest->>AutoAcceptTest: Feedback de User Acceptance Test (sucesso ou falha)
            alt Sucesso nos Testes de Aceitação do Usuário
                %% Continuous Deployment (CD)
                UserAcceptTest->>Release: Trigger para Release
                Release->>UserAcceptTest: Feedback de Release (sucesso ou falha)
            else Falha nos Testes de Aceitação do Usuário
                UserAcceptTest->>Delivery: Feedback de falha
            end
        else Falha nos Testes Automatizados
            AutoAcceptTest->>Delivery: Feedback de falha
        end
    else Falha no Build
        BuildTest->>Delivery: Feedback de falha
    end

GitHub Actions

GitHub Actions é uma plataforma de integração contínua e entrega contínua (CI/CD) que permite automatizar a sua compilação, testar e pipeline de implantação.

Esta plataforma possui recursos oferecendo uma maneira versátil e flexível de definir e executar tarefas, incluindo integração contínua (CI), implantação contínua (CD), teste de código, linting, projetos, gerenciamento de problemas e muito mais.

O GitHub Actions simplifica o processo de automatização de fluxos de trabalho ao fornecer um ambiente onde essas tarefas podem ser configuradas e executadas diretamente em seus repositórios GitHub.

GitHub Actions vai além de apenas DevOps e permite que você execute fluxos de trabalho quando outros eventos ocorrerem no seu repositório. Em sua essência, o GitHub Actions usa uma série de fluxos de trabalho orientados a eventos para executar tarefas em resposta a gatilhos específicos.

Esses fluxos de trabalho são definidos usando arquivos YAML, que são armazenados em um diretório especial dentro do seu repositório (.github/workflows/).

Cada arquivo de fluxo de trabalho consiste em um conjunto de instruções que definem as condições sob as quais o fluxo de trabalho deve ser executado (o gatilho), as tarefas ou "ações" a serem executadas e o ambiente de execução para essas ações.

O GitHub Actions pode ser acionado por vários eventos do GitHub, como enviar código para um repositório, abrir uma solicitação de pull, criar um problema ou até mesmo em uma base programada.

Um dos principais pontos fortes do GitHub Actions é seu design modular.

As ACTIONS podem ser criadas e compartilhadas como componentes individuais e reutilizáveis que podem ser facilmente integrados aos seus fluxos de trabalho.

Você pode usar ações pré-construídas fornecidas pelo GitHub, criar suas próprias ações personalizadas ou aproveitar as ações contribuídas pela comunidade disponíveis no GitHub Actions Marketplace.

Essa abordagem modular permite que os desenvolvedores criem fluxos de trabalho sofisticados combinando várias ações de maneira lógica e simplificada, resultando em maior produtividade e eficiência.

Como ele é construído diretamente na plataforma, não há necessidade de configurar serviços externos ou lidar com chaves de API e outras credenciais. Essa integração estreita com o GitHub permite que os desenvolvedores criem fluxos de trabalho eficientes que automatizam tarefas, como construir e implantar código, executar testes e gerenciar problemas, diretamente na interface familiar do GitHub.

Além disso, o GitHub Actions Marketplace oferece uma ampla gama de ações contribuídas pela comunidade que podem ser facilmente integradas aos seus fluxos de trabalho, fornecendo acesso a uma biblioteca crescente de componentes reutilizáveis.

O GitHub Actions também fornece amplo suporte para personalizar a execução de fluxos de trabalho. Isso inclui a capacidade de controlar o fluxo de tarefas usando instruções condicionais, criar caminhos de execução paralelos e gerenciar dependências entre trabalhos.

Além disso, você pode usar variáveis de ambiente e segredos para armazenar com segurança dados confidenciais e passá-los entre ações, garantindo que seus fluxos de trabalho permaneçam seguros e suas informações confidenciais permaneçam protegidas.

Em resumo, o GitHub Actions é uma plataforma de automação poderosa e flexível que permite que os desenvolvedores criem, compartilhem e reutilizem fluxos de trabalho personalizados para automatizar uma ampla gama de tarefas dentro do processo de desenvolvimento de software.

Sua natureza orientada a eventos, design modular, integração perfeita com o ecossistema GitHub e opções de personalização extensivas o tornam uma ferramenta essencial para equipes modernas de desenvolvimento de software.

O GitHub Actions oferece uma variedade de "executores" predefinidos que servem como ambientes de execução para seus fluxos de trabalho.Estas máquinas virtuais do Linux, Windows e macOS para executar seus fluxos de trabalho, ou você pode hospedar seus próprios executores auto-hospedados na sua própria infraestrutura de dados ou na nuvem.

O GitHub fornece executores hospedados e gratuitos para repositórios públicos, enquanto repositórios privados recebem uma certa quantidade de uso gratuito a cada mês, com a opção de comprar minutos adicionais, se necessário.

Você também pode escolher hospedar seus próprios executores autogerenciados se precisar de mais controle sobre o ambiente de execução ou precisar cumprir com requisitos de segurança específicos.

GitHub Actions Custo

O GitHub Actions é gratuito se uma ou ambas as duas condições a seguir forem atendidas:

  • Os repositórios que você usa com ações são públicos.
  • Os sistemas nos quais você executa as ações (os executores) são seus (em vez de usar os fornecidos pelo GitHub).

Modelo Pago

Repositórios privados Clientes corporativos/empresariais do GitHub podem frequentemente usar esse modelo.

Existem dois tipos de itens pelos quais você paga com o GitHub Action:

  • Armazenamento: Ações permitem que você armazene artefatos e pacotes nos recursos do GitHub.
  • Minutos: As ações exigem tempo de processamento em sistemas virtuais.

Planos e Preços

Planejar Armazenamento Minutos (por mês)
GitHub Free 500 MB 2.000
GitHub Pro 1 GB 3.000
GitHub Free para organizações 500 MB 2.000
GitHub Team 2 GB 3.000
GitHub Enterprise Cloud 50 GB 50.000
Sistema Operacional Multiplicador de minutos Taxa por minuto (USD)
Linux 1 0,008
MacOs 10 0,008
Windows 2 0,016

Observação: Eles só podem funcionar quando executados pelo mecanismo do GitHub.

O que são GitHub Actions?

sequenceDiagram
    participant Board as Azure DevOps - Board
    participant Dev as Developer - Git
    participant DetectSecrets as Pre-Commit - Detect-Secrets
    participant SBOM as SBOM-Scan - OSV-Scanner
    participant SAST as SAST
    participant UnitTest as Unit Test
    participant DockerfileScan as Dockerfile Scan
    participant Build as Build
    participant ImageScan as Container Image Scan
    participant ContainerTest as Container Validation Test
    participant ContainerSigning as Container Signing
    participant K8ManifestScan as K8-Manifest-Scan
    participant K8CISScan as K8-CIS Scan
    participant Deploy as Deploy
    participant SmokeTest as Smoke Test
    participant DAST as DAST

    Board->>Dev: Criar tarefas no board
    Dev->>DetectSecrets: Commit do código
    DetectSecrets->>Dev: Detecta segredos no código?
    alt Falha
        DetectSecrets->>Board: Criar ticket de bug
        Board->>Dev: Corrigir segredos e reexecutar
    else Sucesso
        Dev->>SBOM: Executar SBOM Scan (OSV-Scanner)
        SBOM->>Dev: Vulnerabilidades nas dependências?
        alt Falha
            SBOM->>Board: Criar ticket de bug
            Board->>Dev: Corrigir dependências e reexecutar
        else Sucesso
            Dev->>SAST: Executar SAST
            SAST->>Dev: Vulnerabilidades no código?
            alt Falha
                SAST->>Board: Criar ticket de bug
                Board->>Dev: Corrigir código e reexecutar
            else Sucesso
                Dev->>UnitTest: Executar testes unitários
                UnitTest->>Dev: Testes unitários falharam?
                alt Falha
                    UnitTest->>Board: Criar ticket de bug
                    Board->>Dev: Corrigir falhas e reexecutar
                else Sucesso
                    Dev->>DockerfileScan: Escanear Dockerfile
                    DockerfileScan->>Dev: Dockerfile seguro?
                    alt Falha
                        DockerfileScan->>Board: Criar ticket de bug
                        Board->>Dev: Corrigir Dockerfile e reexecutar
                    else Sucesso
                        Dev->>Build: Build da aplicação
                        Build->>Dev: Build bem-sucedido?
                        alt Falha
                            Build->>Board: Criar ticket de bug
                            Board->>Dev: Corrigir build e reexecutar
                        else Sucesso
                            Dev->>ImageScan: Escanear imagem do contêiner
                            ImageScan->>Dev: Imagem de contêiner segura?
                            alt Falha
                                ImageScan->>Board: Criar ticket de bug
                                Board->>Dev: Corrigir imagem e reexecutar
                            else Sucesso
                                Dev->>ContainerTest: Validar contêiner
                                ContainerTest->>Dev: Contêiner validado?
                                alt Falha
                                    ContainerTest->>Board: Criar ticket de bug
                                    Board->>Dev: Corrigir validação e reexecutar
                                else Sucesso
                                    Dev->>ContainerSigning: Assinar contêiner
                                    ContainerSigning->>Dev: Contêiner assinado?
                                    alt Falha
                                        ContainerSigning->>Board: Criar ticket de bug
                                        Board->>Dev: Corrigir assinatura e reexecutar
                                    else Sucesso
                                        Dev->>K8ManifestScan: Escanear manifesto do Kubernetes
                                        K8ManifestScan->>Dev: Manifests seguros?
                                        alt Falha
                                            K8ManifestScan->>Board: Criar ticket de bug
                                            Board->>Dev: Corrigir manifesto e reexecutar
                                        else Sucesso
                                            Dev->>K8CISScan: Escanear Kubernetes com CIS Scan
                                            K8CISScan->>Dev: Conformidade com CIS?
                                            alt Falha
                                                K8CISScan->>Board: Criar ticket de bug
                                                Board->>Dev: Corrigir CIS e reexecutar
                                            else Sucesso
                                                Dev->>Deploy: Implantar aplicação
                                                Deploy->>Dev: Deploy bem-sucedido?
                                                alt Falha
                                                    Deploy->>Board: Criar ticket de bug
                                                    Board->>Dev: Corrigir deploy e reexecutar
                                                else Sucesso
                                                    Dev->>SmokeTest: Executar smoke test
                                                    SmokeTest->>Dev: Smoke test passou?
                                                    alt Falha
                                                        SmokeTest->>Board: Criar ticket de bug
                                                        Board->>Dev: Corrigir falha e reexecutar
                                                    else Sucesso
                                                        Dev->>DAST: Executar DAST
                                                        DAST->>Dev: DAST passou?
                                                        alt Falha
                                                            DAST->>Board: Criar ticket de bug
                                                            Board->>Dev: Corrigir falha de DAST e reexecutar
                                                        else Sucesso
                                                            Dev->>Board: Task concluída com sucesso
                                                        end
                                                    end
                                                end
                                            end
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end

Termos

  • Nightly Builds (ou compilações noturnas) são processos automatizados de construção, teste e deploy de um software que são executados todas as noites, geralmente em um horário programado (ex.: 2h da manhã). Eles são uma prática essencial no desenvolvimento contínuo (Continuous Integration/Delivery - CI/CD) para garantir a estabilidade do código.