====== Conceitos: Jobs e Estágios ====== [[pres:gerti:devops:como_criar_uma_pipeline_de_ci_cd|Como criar uma pipeline de CI/CD]] Para implementar as pipelines do GitLab, é importante saber que ela funciona com **Jobs** organizados em **Estágios**, como uma linha de montagem. Vamos apresentar brevemente esses conceitos pois, com a biblioteca [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates|TCE.Templates]], não será necessário escrever os jobs na mão — apenas saber como eles funcionam. Para mais informações, veja: [[https://docs.gitlab.com/ci/jobs/|CI/CD Jobs]] e [[https://docs.gitlab.com/ci/pipelines/|CI/CD Pipelines]]. ===== Job ===== Cada Job é um script (definido por nós, desenvolvedores) que realiza alguma tarefa: executar um **teste**, fazer o **versionamento**, realizar o **deploy**… Um exemplo de job de testes seria: test-job: # Nome do job, pode ser qualquer nome image: python:3.10-alpine stage: test before_script: - pip install pytest script: - pytest # Comando que efetivamente executa os tests allow_failure: false tags: - docker-pipes-runner # Servidor onde ele será executado * ''%%test-job%%'' — nome do Job. * ''%%image: python:3.10-alpine%%'' — roda dentro de um container [[..:docker|docker]] com essa imagem. * ''%%stage: test%%'' — será executado durante o estágio de testes. * ''%%script: pytest%%'' — o comando que executa os testes. * ''%%before_script: pip install pytest%%'' — instala a dependência antes de rodar. * ''%%allow_failure: false%%'' — se o ''%%pytest%%'' retornar erro, interrompe os próximos estágios. **Dica**: O ''%%allow_failure: false%%'' funciona como um Quality Gate: previne que código com erros chegue à produção. ===== Estágios ===== Se os **Jobs** são as tarefas, os **Estágios** são o cronograma da linha de montagem. Eles definem a **ordem de execução**: o estágio 2 só começa quando o estágio 1 terminar com sucesso. Jobs no mesmo estágio rodam em paralelo. # A ordem aqui define a ordem de execução stages: - lint # 1. Verifica estilo e erros de sintaxe - tests # 2. Executa os testes automatizados - sonar # 3. Analisa cobertura e segurança (Quality Gate) - semantic-release # 4. Gera versão e Changelog se tudo acima passou - build # 5. Gera o pacote/imagem da nova versão - deploy # 6. Publica no ambiente de destino ====== Próximo ====== * [[pres:gerti:devops:guias:como_criar_uma_pipeline_de_ci_cd:configurando_pipeline|Configurando uma pipeline]]