====== 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]]