====== Pipeline de CI/CD ====== Uma pipeline de CI/CD é uma "esteira de automação" que garante que o código saia do computador do desenvolvedor e chegue ao ambiente de produção de forma rápida, padronizada e segura. Ao realizar um git push para o repositório, o GitLab CI/CD inicia automaticamente um fluxo de trabalho que compreende: - **Code Quality**: Linting e análise estática. - **Security (SAST)**: Varredura de vulnerabilidades no código fonte. - **Testing**: Execução de testes unitários e de integração. - **Build**: Criação da imagem Docker (veja [[..:docker]]). - **Release**: [[..:versionamento_semantico]] e publicação no [[..:registry]]. - **Deploy**: Atualização automática no [[..:cluster_kubernetes]]. ==== Como funciona no projeto? ==== Toda a inteligência da pipeline reside no arquivo ''.gitlab-ci.yml'' na raiz do projeto. Ele organiza o trabalho em: - Stages (Estágios): As fases do processo (ex: build, test, deploy). - Jobs (Tarefas): O que é executado de fato (ex: run-unit-tests, docker-build). Jobs de um mesmo estágio rodam em paralelo. Para detalhes técnicos, consulte a [[https://docs.gitlab.com/ci/pipelines/|Documentação Oficial do GitLab]]. A pipeline do Gitlab é dividida em Estágios (test, build, deploy) e em cada estágio, um ou mais jobs são executados (ex: production:test-python, production:build-k8s e production:deploy-k8s). ===== Repositório TCE.Templates ===== Para evitar a repetição de código ("Don't Repeat Yourself"), utilizamos os [[https://docs.gitlab.com/ci/components/|CI/CD Components]]. Em vez de configurar cada passo do zero, você importa blocos prontos da nossa biblioteca central: [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates|TCE.Templates]]. Pense nos componentes como funções: você os chama no seu arquivo YAML e passa inputs (parâmetros) para definir comportamentos específicos (ex: versão do Python, porta do serviço, etc). ===== Próximo ===== *[[pres:gerti:devops:como_criar_uma_pipeline_de_ci_cd:start|Como Criar uma Pipeline de CI/CD]]