Pointer
DATAPREV
Turma cicd-t1

GitLab CI/CD — turma 1

Remoto ao vivo · 8 h · 30/03/2027 a 01/04/2027 · Instrutor: Gustavo Costa

← Todas as turmas

Agenda

SessãoDataHorárioMódulos
s130/03/202709:00–11:00Fundamentos de pipelines GitLab CI/CD; GitLab Runner: tipos, executores, registro e operação
s230/03/202711:00–13:00Pipelines avançados: pai-filho, multiprojeto, merged results e merge trains; Controle de execução: rules, workflow, needs e paralelismo
s301/04/202709:00–11:00Variáveis, artefatos, cache e relatórios de teste; Reuso de configuração: include, extends, inputs e componentes do CI/CD Catalog
s401/04/202711:00–13:00Container registry e package registry; Entrega contínua: ambientes, deploys, releases e proteção de produção; Varreduras de segurança no pipeline: SAST, segredos, dependências, contêiner e IaC

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

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: repositorio-git

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
GitLab Runner: tipos, executores, registro e operação · Intermediário · 2 h

Objetivos

  • Criar e registrar um runner com token de autenticação (prefixo glrt-).
  • Configurar tags, execução de jobs sem tag e runner protegido.
  • Distinguir runners de instância, grupo e projeto e os executores ativos e em manutenção.
  • Interpretar os status de runner (online, offline, stale, never_contacted).

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

Conteúdo

TópicoTierFonte
Runners de instância, grupo e projeto; fila de uso justo dos runners de instânciaFreedocumentação
Fluxo de criação de runner com token de autenticação glrt-; token de registro legadoFreedocumentação
Executores Kubernetes, Docker, Docker Autoscaler e Instance; SSH, Shell, Parallels, VirtualBox e Custom em modo de manutençãoFreedocumentação
Tags, Run untagged jobs, runners protegidosFreedocumentação
config.toml (/etc/gitlab-runner/ como root), concurrent e recarga automática a cada 3 segundosFreedocumentação
Status de runner: online (contato nas últimas 2 h), offline, stale (mais de 7 dias), never_contactedFreedocumentação
Pipelines avançados: pai-filho, multiprojeto, merged results e merge trains · Avançado · 2 h

Objetivos

  • Configurar pipelines filhos com trigger:include e pipelines multiprojeto com trigger:project.
  • Configurar trigger:strategy para refletir o status do pipeline downstream.
  • Configurar pipelines de merged results e merge trains.
  • Configurar a allowlist do CI/CD job token para acesso entre projetos.

Pré-requisitos: Controle de execução: rules, workflow, needs e paralelismo

Conteúdo

TópicoTierFonte
Pipelines downstream: pai-filho (mesmo projeto, ref e SHA; profundidade máxima de dois níveis de filhos) e multiprojetoFreedocumentação
trigger:strategy mirror; hierarquia de até 1000 pipelines downstream por padrãoFreedocumentação
Pipelines de merge requestFreedocumentação
Pipelines de merged results (commit temporário de merge)Premiumdocumentação
Merge trains (até 20 pipelines em paralelo por merge train por padrão)Premiumdocumentação
CI/CD job token e allowlist (por padrão a allowlist contém apenas o próprio projeto)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
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
Reuso de configuração: include, extends, inputs e componentes do CI/CD Catalog · Avançado · 3 h

Objetivos

  • Configurar include dos tipos local, project, remote, template e component.
  • Reutilizar configuração com extends, jobs ocultos e !reference.
  • Criar um componente com spec:inputs tipados.
  • Publicar uma versão semântica do componente no CI/CD Catalog e consumi-la em outro projeto.

Pré-requisitos: Variáveis, artefatos, cache e relatórios de teste, Controle de execução: rules, workflow, needs e paralelismo

Conteúdo

TópicoTierFonte
include (component, local, project, remote, template); até 150 includes por pipeline; mesclagem com precedência do .gitlab-ci.ymlFreedocumentação
extends (até 11 níveis de herança), jobs ocultos, âncoras YAML restritas ao próprio arquivo e !referenceFreedocumentação
spec:inputs: tipos string (padrão), array, number e boolean; interpolação $[[ inputs.id ]]; input obrigatório sem defaultFreedocumentação
Inputs x variáveis de CI/CD (valor fixo na criação do pipeline x valor em tempo de execução)Freedocumentação
Projeto de componentes: diretório templates/, até 100 componentes por projeto, referência FQDN/caminho/componente@versão, ~latest e versão semântica parcialFreedocumentação
Publicação no CI/CD Catalog: projeto de catálogo (Owner), descrição, README.md e job com releaseFreedocumentação
Container registry e package registry · Intermediário · 2 h

Objetivos

  • Construir e publicar imagem no container registry a partir do pipeline.
  • Autenticar no registry com CI_REGISTRY_USER, CI_REGISTRY_PASSWORD ou CI_JOB_TOKEN.
  • Publicar pacote genérico no package registry.
  • Configurar política de limpeza do container registry.

Pré-requisitos: Variáveis, artefatos, cache e relatórios de teste

Conteúdo

TópicoTierFonte
Nome de imagem <registry>/<namespace>/<projeto>[/caminho] com até dois níveis adicionaisFreedocumentação
Autenticação no pipeline com CI_REGISTRY_USER/CI_REGISTRY_PASSWORD ou CI_JOB_TOKENFreedocumentação
Política de limpeza (name_regex e name_regex_keep)Freedocumentação
Package registry: formatos (Maven, npm, NuGet, PyPI, Terraform, entre outros)Freedocumentação
Pacotes genéricos: PUT /projects/:id/packages/generic/:nome/:versão/:arquivoFreedocumentação
Entrega contínua: ambientes, deploys, releases e proteção de produção · Intermediário · 3 h

Objetivos

  • Configurar ambientes estáticos e dinâmicos com deployment tier.
  • Configurar review apps com parada automática.
  • Configurar deploy manual com resource_group e bloqueio de jobs de deploy desatualizados.
  • Configurar ambiente protegido com aprovação de deploy.
  • Criar release por pipeline e consultar a evidência da release.

Pré-requisitos: Variáveis, artefatos, cache e relatórios de teste

Conteúdo

TópicoTierFonte
environment, deployment tiers (production, staging, testing, development, other) e atribuição automática pelo nomeFreedocumentação
Review apps: ambiente dinâmico por branch, on_stop com environment:action stop, auto_stop_inFreedocumentação
resource_group, Prevent outdated deployment jobs e deploy freeze (variável CI_DEPLOY_FREEZE)Freedocumentação
Ambientes protegidosPremiumdocumentação
Aprovações de deploy; autoaprovação desabilitada por padrão para quem disparou o pipelinePremiumdocumentação
Releases com a palavra-chave release; evidência da release em JSONFreedocumentação
Artefatos de relatório incluídos na evidência da releaseUltimatedocumentação
Varreduras de segurança no pipeline: SAST, segredos, dependências, contêiner e IaC · Intermediário · 3 h

Objetivos

  • Habilitar SAST, detecção de segredos no pipeline, varredura de contêiner e de IaC com templates CI/CD.
  • Habilitar secret push protection e identificar as formas de ignorá-la e o registro em auditoria.
  • Habilitar dependency scanning por SBOM.
  • Identificar os resultados de varredura disponíveis por tier.

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

Conteúdo

TópicoTierFonte
SAST com analisadores open source, relatório JSON; exige stage test e runner Linux com executor Docker ou KubernetesFreedocumentação
GitLab Advanced SAST e resultados de SAST no merge requestUltimatedocumentação
Detecção de segredos no pipeline (template Jobs/Secret-Detection.gitlab-ci.yml)Freedocumentação
Secret push protection (GA 17.5): bloqueio do push, [skip secret push protection], push option secret_push_protection.skip_all, evento de auditoriaUltimatedocumentação
Dependency scanning por SBOM CycloneDX (GA 19.0; template Jobs/Dependency-Scanning.v2.gitlab-ci.yml); Gemnasium depreciado em 17.9Ultimatedocumentação
Container scanning com Trivy (template Jobs/Container-Scanning.gitlab-ci.yml, variável CS_IMAGE)Freedocumentação
Varredura de IaC com KICS (template Jobs/SAST-IaC.gitlab-ci.yml)Freedocumentaçã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-ci-01Primeiro pipeline com stages e jobsCriar .gitlab-ci.yml com build e teste e executar o pipeline em main.Free45 min
lab-ci-07Pipeline pai-filho e multiprojetoSeparar o pipeline por componente e disparar deploy em outro projeto refletindo o status.Free45 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-ci-04Variável protegida e mascaradaUsar credencial em job de branch protegida sem expor o valor no log.Free30 min
lab-ci-03Relatório de testes, cobertura e artefatosPublicar relatório JUnit, percentual de cobertura e artefato com expiração.Free50 min
lab-registro-01Imagem no container registry, pacote genérico e limpezaPublicar artefatos de build nos registries do projeto e controlar retenção.Free45 min
lab-seg-01Habilitar SAST, detecção de segredos, container scanning e IaC scanningAdicionar varreduras de segurança ao pipeline com os templates CI/CD.Free50 min