Jobs - Os Blocos da Pipeline

Os jobs no GitLab são definidos dentro do .gitlab-ci.yml e podem incluir diferentes scripts. Cada job representa uma tarefa específica que será executada pelo GitLab Runner.

Estrutura Básica

executar_teste:
  script:
    - echo "Executando testes..."
criar_imagem:
  script:
    - echo "Criando imagem..."
push_imagens:
  script:
    - echo "Realizando upload das imagens"

Componentes de um Job

Cada job pode ter:

  • script: Lista de comandos a executar
  • stage: Stage ao qual o job pertence (Stages)
  • only/except: Regras para quando executar
  • artifacts: Arquivos gerados que devem ser salvos
  • dependencies: Jobs dos quais este depende (Dependências)

Exemplo Real: Build do Vault

No pipeline-gitlab, há um job específico para processar o vault:

build-app:
  stage: build
  script:
    - ./scripts/update-vault.sh     # Executa VaultService
    - npm run build                 # Build do Next.js
  artifacts:
    paths:
      - public/vault
      - .next

Este job:

  1. Executa o script que chama a API do Grafo
  2. Processa todos os arquivos markdown
  3. Gera o grafo de conhecimento
  4. Salva os artifacts para uso posterior

Jobs Paralelos vs Sequenciais

Dentro do mesmo stage, jobs podem rodar em paralelo:

test-frontend:
  stage: test
  script: npm run test:frontend
 
test-backend:
  stage: test
  script: npm run test:backend

Esses dois jobs rodam ao mesmo tempo, acelerando o pipeline.

Conceitos Relacionados

Boas Práticas

  1. Nomes descritivos: Use nomes claros como build-vault em vez de job1
  2. Artifacts seletivos: Salve apenas o necessário para economizar espaço
  3. Cache inteligente: Use cache para node_modules/ e acelerar builds
  4. Fail fast: Coloque testes no primeiro stage para falhar rápido

Exemplo Completo

Veja um exemplo completo de jobs organizados em stages no arquivo pipeline-gitlab.