🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

Como configurar CI/CD com GitLab CI em 2026: guia completo de pipeline

⏱️5 min read  ·  915 words

CI GitLab é um dos sistemas CI/CD mais poderosos e totalmente integrados disponíveis em 2026 — sem necessidade de serviços externos, pipelines definidos em um único.gitlab-ci.yml arquivo. Este guia cria um pipeline completo, desde o teste até a implantação em produção.

Como funciona o GitLab CI

GitLab CI executa pipelines definidos em.gitlab-ci.yml na raiz do seu repositório. Cada pipeline temetapas (testar, construir, implantar) que são executados sequencialmente. Dentro de um estágio,empregos correr em paralelo. Os trabalhos são executados emcorredores (hospedado no GitLab ou auto-hospedado).

Estrutura Básica do Pipeline

# .gitlab-ci.yml
stages:
  - test
  - build
  - deploy

variables:
  NODE_VERSION: "20"

# Test stage
test:
  stage: test
  image: node:20-alpine
  cache:
    key: "$CI_COMMIT_REF_SLUG"
    paths:
      - node_modules/
  script:
    - npm ci
    - npm run lint
    - npm run test:coverage
  artifacts:
    reports:
      coverage_report:
        coverage_format: cobertura
        path: coverage/cobertura-coverage.xml

Construir estágio com Docker

build:
  stage: build
  image: docker:24
  services:
    - docker:24-dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    - docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
    - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
    - docker push "$CI_REGISTRY_IMAGE:latest"
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'

Estágio de implantação com ambientes

deploy_production:
  stage: deploy
  image: alpine:latest
  before_script:
    - apk add --no-cache openssh-client
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | ssh-add -
  script:
    - ssh -o StrictHostKeyChecking=no $DEPLOY_USER@$PROD_HOST
      "cd /app && docker compose pull && docker compose up -d"
  environment:
    name: production
    url: https://example.com
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'
      when: manual   # require manual approval for production

Cache para pipelines mais rápidos

cache:
  key:
    files:
      - package-lock.json   # cache invalidates when lockfile changes
  paths:
    - node_modules/
    - .npm/

# Python:  paths: [.cache/pip, venv/]
# Go:      paths: [.go/pkg/mod/]
# Rust:    paths: [target/, .cargo/]

Construções de matrizes paralelas

test:
  stage: test
  parallel:
    matrix:
      - NODE_VERSION: ["18", "20", "22"]
  image: node:$NODE_VERSION-alpine
  script:
    - npm ci
    - npm test
# Runs 3 parallel jobs testing against Node 18, 20, 22

Gerenciando segredos e variáveis Nunca codifique segredos. Armazene-os em

Configurações, depois CI/CD e depois Variáveis Marque valores sensíveis comoMascarado:

  • (oculto nos registros)Marque os segredos de implantação comoProtegido
  • (disponível apenas em filiais protegidas)UsarEscopos ambientais
  • para diferentes valores de preparação versus produçãoDicas de otimização de pipelineUsar

executar jobs fora da ordem do estágio quando as dependências permitirem

  • Usarneeds: em vez de
  • (moderno, mais flexível)rules:Usaronly/except então novos impulsos cancelam pipelines desatualizados
  • Armazenar em cache agressivamenteinterruptible: true — a instalação da dependência geralmente é a etapa mais lenta
  • Use imagens de base pequenas (variantes alpinas) para inicialização mais rápida do trabalho
  • Perguntas FrequentesP: GitLab CI vs GitHub Actions?

R: O GitLab CI é totalmente integrado ao GitLab (registro, ambientes, verificação de segurança integrada). GitHub Actions tem um mercado maior de ações pré-construídas. Ambos são excelentes; escolha com base em onde seu código reside.

P: Preciso de executores auto-hospedados?
R: Os executores hospedados no GitLab funcionam para a maioria dos projetos. Os executores auto-hospedados valem a pena para cargas de trabalho pesadas, hardware específico ou acesso à rede privada.

P: Como posso acelerar pipelines lentos?
R: Dependências de cache, use

para execução paralela, use imagens Docker menores, divida conjuntos de testes com
. Crie primeiro o perfil dos trabalhos mais lentos.needs:P: Como lidar com migrações de banco de dados no pipeline?parallel:R: Execute migrações como um trabalho de estágio de implantação antes de reiniciar o aplicativo. Sempre teste primeiro as migrações na preparação com um banco de dados semelhante ao de produção.

P: Cache versus artefatos — qual é a diferença?
acelera os trabalhos reutilizando arquivos entre execuções (não garantido).

passar arquivos entre estágios dentro de um pipeline (garantido).
A: cacheConclusãoartifactsGitLab CI fornece um sistema CI/CD completo e integrado em um único arquivo YAML. O pipeline aqui – testar com cobertura, criar e enviar imagens Docker, implantar para produção com aprovação manual – cobre todo o fluxo de trabalho para a maioria dos aplicativos. Comece com um estágio de teste, adicione compilação e implantação de forma incremental e otimize com cache e trabalhos paralelos à medida que seu pipeline cresce.

GitLab CI fornece um sistema CI/CD completo e integrado em um único arquivo YAML. O pipeline aqui – testar com cobertura, criar e enviar imagens Docker, implantar para produção com aprovação manual – cobre todo o fluxo de trabalho para a maioria dos aplicativos. Comece com um estágio de teste, adicione compilação e implantação de forma incremental e otimize com cache e trabalhos paralelos à medida que seu pipeline cresce.

GitLab CI fornece um sistema CI/CD completo e integrado em um único arquivo YAML. O pipeline aqui – testar com cobertura, criar e enviar imagens Docker, implantar para produção com aprovação manual – cobre todo o fluxo de trabalho para a maioria dos aplicativos. Comece com um estágio de teste, adicione compilação e implantação de forma incremental e otimize com cache e trabalhos paralelos à medida que seu pipeline cresce.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇩🇪 Deutsch🇧🇷 Português🇮🇳 हिन्दी🇧🇩 বাংলা