Pointer
ALESP
Turma desenvolvimento-t1

Desenvolvimento — Git, pipelines, CI/CD, versionamento e revisão de código

Híbrido · 20 h · 07/12/2026 a 11/12/2026 · Instrutor: Gustavo Costa

← Todas as turmas

Agenda

SessãoDataHorárioMódulos
s107/12/202609:00–13:00Plataforma GitLab: organização, visibilidade e papéis; Repositório Git na plataforma GitLab: branches, tags e proteção
s208/12/202609:00–13:00Merge requests e revisão de código; Fundamentos de pipelines GitLab CI/CD
s309/12/202609:00–13:00Fundamentos de pipelines GitLab CI/CD; Variáveis, artefatos, cache e relatórios de teste
s410/12/202609:00–13:00Controle de execução: rules, workflow, needs e paralelismo; Identidade, tokens e segredos em CI/CD
oficina11/12/202609:00–13:00Merge requests e revisão de código; Fundamentos de pipelines GitLab CI/CD

Formulários

Presença

Registro de presença na sessão com o código informado pelo instrutor.

coleta fechada

Responder

Avaliação pré

Questionário antes do primeiro módulo (mede o conhecimento inicial).

coleta fechada

Responder

Avaliação pós

O mesmo questionário ao final da turma (mede a evolução).

coleta fechada

Responder

Satisfação

Pesquisa anônima sobre a turma, o instrutor e os laboratórios.

coleta fechada

Responder

Módulos

Plataforma GitLab: organização, visibilidade e papéis · Básico · 2 h

Objetivos

  • Criar grupo, subgrupo e projeto na hierarquia de um grupo de nível superior.
  • Configurar a visibilidade de grupo e projeto respeitando a restrição do grupo pai.
  • Atribuir papéis padrão a membros e identificar o papel efetivo herdado.
  • Distinguir as permissões dos papéis Guest, Planner, Reporter, Developer, Maintainer e Owner.

Conteúdo

TópicoTierFonte
Grupos, subgrupos (até 20 níveis de aninhamento) e projetosFreedocumentação
Visibilidade private, internal e public; visibilidade do projeto igual ou mais restritiva que a do grupo paiFreedocumentação
Visibilidade internal disponível apenas em GitLab Self-Managed e GitLab DedicatedFreedocumentação
Papéis padrão (Minimal Access, Guest, Planner, Reporter, Developer, Maintainer, Owner) e prevalência do papel mais alto na herançaFreedocumentação
Papel Security Manager (beta desde 18.11)Freedocumentação
Membros de projeto e de grupo, membros herdados e diretosFreedocumentação
Repositório Git na plataforma GitLab: branches, tags e proteção · Básico · 2 h

Objetivos

  • Criar branches e tags e integrar alterações pela interface e pela linha de comando Git.
  • Configurar regras de branch protegida (Allowed to merge, Allowed to push and merge, force push).
  • Configurar tags protegidas por nome ou curinga.
  • Configurar push rules de mensagem de commit e de autoria.

Pré-requisitos: Plataforma GitLab: organização, visibilidade e papéis

Conteúdo

TópicoTierFonte
Branch padrão protegida por padrão; regras em Settings > Repository > Branch rulesFreedocumentação
Allowed to merge, Allowed to push and merge (inclusive No one), Allowed to force push, regras com curingaFreedocumentação
Branches protegidas no nível de grupo; grupos e usuários individuais nas listas de permissãoPremiumdocumentação
Tags protegidas: controle de criação e bloqueio de atualização e exclusãoFreedocumentação
Push rules (pre-receive hooks): expressões RE2 até 511 caracteres, mensagem de commit, autor, commits assinadosPremiumdocumentação
Branches: criação, comparação e exclusãoFreedocumentação
Merge requests e revisão de código · Básico · 2 h

Objetivos

  • Executar o fluxo issue, branch, merge request e merge com fechamento automático da issue.
  • Configurar métodos de merge e verificações de merge (pipeline com sucesso, threads resolvidas).
  • Configurar regras de aprovação e arquivo CODEOWNERS.
  • Identificar as configurações de aprovação que implementam separação de funções.

Pré-requisitos: Repositório Git na plataforma GitLab: branches, tags e proteção

Conteúdo

TópicoTierFonte
Padrão de fechamento (Closes, Fixes, Resolves, Implements) em commit ou descrição do MRFreedocumentação
Métodos de merge: merge commit, merge commit com histórico semilinear, fast-forward; squashFreedocumentação
Auto-merge e verificação Pipelines must succeedFreedocumentação
Aprovações opcionais no Free (papel Developer ou superior)Freedocumentação
Regras de aprovação obrigatórias e aprovações em nível de grupo e instânciaPremiumdocumentação
Code Owners: arquivo CODEOWNERS (raiz, docs/ ou .gitlab/) e aprovação obrigatória em branch protegidaPremiumdocumentação
Configurações de aprovação: impedir aprovação pelo autor (padrão), por quem adicionou commits, remover aprovações em novos commitsPremiumdocumentação
Fundamentos de pipelines GitLab CI/CD · Básico · 3 h

Objetivos

  • Criar um arquivo .gitlab-ci.yml com stages e jobs e validá-lo no pipeline editor.
  • Executar um pipeline e interpretar o log e o status de cada job.
  • Configurar execução condicional básica com when e allow_failure.
  • Diagnosticar falhas de sintaxe e de script em pipelines.

Pré-requisitos: Repositório Git na plataforma GitLab: branches, tags e proteção

Conteúdo

TópicoTierFonte
Estrutura do .gitlab-ci.yml: palavras-chave globais (default, include, stages, variables, workflow) e de jobFreedocumentação
Stages padrão (.pre, build, test, deploy, .post); job sem stage vai para testFreedocumentação
Jobs, script, before_script, after_script, image, jobs ocultos iniciados por pontoFreedocumentação
when (on_success padrão, on_failure, always, manual, delayed, never) e allow_failureFreedocumentação
Pipeline editor e validação de configuração (CI Lint)Freedocumentação
Tipos e estados de pipelineFreedocumentação
Variáveis, artefatos, cache e relatórios de teste · Intermediário · 3 h

Objetivos

  • Configurar variáveis de CI/CD protegidas, mascaradas e ocultas em projeto e grupo.
  • Aplicar a ordem de precedência de variáveis para prever o valor usado por um job.
  • Configurar artefatos com expiração e dependências entre jobs.
  • Configurar cache com chave e política.
  • Publicar relatório de testes JUnit e cobertura de código no merge request.

Pré-requisitos: Fundamentos de pipelines GitLab CI/CD

Conteúdo

TópicoTierFonte
Variáveis no .gitlab-ci.yml e na interface (projeto, grupo, instância); variáveis predefinidasFreedocumentação
Visibilidade Visible, Masked (padrão) e Masked and hidden; requisitos de mascaramento (linha única, 8 caracteres ou mais)Freedocumentação
Variáveis protegidas (apenas branches e tags protegidas) e variáveis do tipo arquivoFreedocumentação
Precedência de variáveis e restrição de pipeline variables por papel mínimoFreedocumentação
Artefatos: paths, expire_in (padrão da instância, 30 dias), manter artefatos mais recentes, dependenciesFreedocumentação
Cache: key, fallback keys, policy pull/push; cache x artefatos; branches protegidas e não protegidas não compartilham cache por padrãoFreedocumentação
Relatórios de testes unitários JUnit (arquivo até 30 MB, total até 100 MB por job)Freedocumentação
Cobertura: palavra-chave coverage (percentual) e artifacts:reports:coverage_report (Cobertura ou JaCoCo)Freedocumentação
Controle de execução: rules, workflow, needs e paralelismo · Intermediário · 2 h

Objetivos

  • Configurar rules com if, changes e exists e prever a inclusão de jobs no pipeline.
  • Configurar workflow:rules para pipelines de merge request e da branch padrão.
  • Configurar dependências com needs para execução fora da ordem de stages.
  • Configurar parallel e parallel:matrix.

Pré-requisitos: Fundamentos de pipelines GitLab CI/CD

Conteúdo

TópicoTierFonte
rules: avaliação em ordem, primeira correspondência, job fora do pipeline sem correspondênciaFreedocumentação
workflow:rules e CI_PIPELINE_SOURCE == merge_request_eventFreedocumentação
needs (até 50 jobs por padrão), needs: [] e grafo acíclico dirigidoFreedocumentação
parallel (1 a 200) e parallel:matrix (até 200 permutações)Freedocumentação
interruptible e auto-cancelamento de pipelines redundantes; retry e timeoutFreedocumentação
Identidade, tokens e segredos em CI/CD · Avançado · 2 h

Objetivos

  • Identificar tipos de token pelo prefixo e o prazo de expiração padrão de tokens de acesso.
  • Configurar a allowlist do CI/CD job token.
  • Configurar ID tokens (OIDC) com audiência por job.
  • Configurar leitura de segredos do HashiCorp Vault com a palavra-chave secrets.

Pré-requisitos: Fundamentos de pipelines GitLab CI/CD

Conteúdo

TópicoTierFonte
Prefixos de token (glpat-, glrt-, glcbt-, gldt-, glptt-, glagent-, entre outros)Freedocumentação
Personal access tokens: expiração padrão de 365 dias e limite máximo configurável pelo administradorFreedocumentação
CI/CD job token e allowlist de projetos e gruposFreedocumentação
ID tokens (JWT) com id_tokens e claim audFreedocumentação
Segredos do HashiCorp Vault em jobs (autenticação JWT com ID token)Premiumdocumentação
GitLab Secrets Manager (beta público desde 19.0; disponibilidade limitada no GitLab.com desde 19.3; consome GitLab Credits)Premiumdocumentação
Papéis customizados baseados em papel padrãoUltimatedocumentação

Laboratórios

Cada aluno recebe um subgrupo com os projetos dos exercícios; a correção é automática, pela API da plataforma GitLab.

ExercícioTítuloObjetivoTierDuração
lab-repositorio-01Proteger a branch main e as tags de releaseConfigurar branch protegida sem push direto e tags protegidas por curinga.Free30 min
lab-repositorio-02Push rule de mensagem de commitConfigurar push rule que exige padrão de mensagem de commit.Premium20 min
lab-mr-01Fluxo issue, branch, merge request e mergeFechar uma issue automaticamente pelo merge de um merge request com revisão registrada.Free30 min
lab-ci-01Primeiro pipeline com stages e jobsCriar .gitlab-ci.yml com build e teste e executar o pipeline em main.Free45 min
lab-ci-02Diagnosticar pipeline quebradoCorrigir erro de sintaxe YAML e erro de script sem remover testes.Free40 min
lab-ci-03Relatório de testes, cobertura e artefatosPublicar relatório JUnit, percentual de cobertura e artefato com expiração.Free50 min
lab-ci-04Variável protegida e mascaradaUsar credencial em job de branch protegida sem expor o valor no log.Free30 min
lab-ci-05Pipelines de merge request, rules, needs e matrixControlar quando o pipeline e cada job rodam e reduzir o tempo total com DAG.Free50 min
lab-segredos-01CI/CD job token entre projetos e ID tokenAutorizar acesso entre projetos pela allowlist do job token e declarar ID token com audiência.Free45 min