🦊 O que é GitLab?
GitLab é uma plataforma DevSecOps completa — do planejamento ao monitoramento em produção, tudo em um único lugar. Disponível como SaaS (gitlab.com) ou self-hosted gratuito.
Self-Hosted Gratuito
GitLab Community Edition (CE) é 100% open source. Instale no seu servidor sem custo de licença.
CI/CD Nativo Poderoso
Pipeline como código com .gitlab-ci.yml — stages, jobs, artifacts, environments e muito mais.
DevSecOps Integrado
SAST, DAST, Secret Detection e Dependency Scanning incluídos — segurança no pipeline sem ferramentas externas.
Registry Integrado
Container Registry, Package Registry (npm, Maven, PyPI) e Terraform Module Registry nativos.
⚙️ GitLab CI/CD
O .gitlab-ci.yml define todo o pipeline — stages, jobs, regras e ambientes.
stages: - build - test - staging - production variables: IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA # ── BUILD ────────────────────────────── build-docker: stage: build image: docker:24 services: [docker:24-dind] script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $IMAGE . - docker push $IMAGE # ── TEST ─────────────────────────────── unit-tests: stage: test image: node:20 script: - npm ci - npm test artifacts: reports: junit: junit.xml sast: stage: test include: - template: Security/SAST.gitlab-ci.yml # ── STAGING ──────────────────────────── deploy-staging: stage: staging environment: name: staging url: https://staging.meusite.com script: - kubectl set image deployment/app app=$IMAGE # ── PRODUCTION ───────────────────────── deploy-prod: stage: production environment: name: production url: https://meusite.com when: manual # requer aprovação manual only: [main] script: - kubectl set image deployment/app app=$IMAGE
GitLab injeta automaticamente variáveis como $CI_REGISTRY, $CI_COMMIT_SHORT_SHA, $CI_PROJECT_NAME e $CI_ENVIRONMENT_URL — sem configuração extra.
🏃 GitLab Runners
Runners são os agentes que executam os jobs do pipeline. Você pode usar runners compartilhados ou hospedar os seus.
Shared Runners
Fornecidos pelo GitLab.com. Gratuitos com limite de minutos. Ideais para projetos open source e times pequenos.
Group Runners
Compartilhados entre todos os projetos de um grupo. Ótimos para times que precisam de configuração padronizada.
Self-Hosted Runners
Instale em qualquer máquina — EC2, VM, Kubernetes. Sem limite de minutos e acesso a recursos internos.
# Instalar gitlab-runner curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt install gitlab-runner # Registrar runner (obter token em Settings > CI/CD > Runners) sudo gitlab-runner register \ --url https://gitlab.com \ --token SEU_TOKEN \ --executor docker \ --docker-image alpine:latest \ --description "meu-runner-aws" # Iniciar como serviço sudo gitlab-runner start sudo gitlab-runner status
📦 Container Registry
Cada projeto GitLab tem um Container Registry integrado — sem configuração extra.
# Login docker login registry.gitlab.com # Build com tag do projeto docker build -t registry.gitlab.com/grupo/projeto/app:latest . # Push docker push registry.gitlab.com/grupo/projeto/app:latest # No .gitlab-ci.yml — login automático com variáveis CI # docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
🔒 DevSecOps — Segurança no Pipeline
GitLab inclui ferramentas de segurança prontas para usar via templates — basta incluir no .gitlab-ci.yml.
include: - template: Security/SAST.gitlab-ci.yml - template: Security/DAST.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml - template: Security/Container-Scanning.gitlab-ci.yml - template: Security/Secret-Detection.gitlab-ci.yml # Os resultados aparecem na aba Security do Merge Request # e no Security Dashboard do projeto/grupo
⚖️ GitLab vs GitHub — Quando usar cada um?
Não existe resposta única — depende do contexto do seu projeto e time.
Escolha GitHub quando...
Projeto open source, quer maior visibilidade da comunidade, usa GitHub Copilot, ou o time já está familiarizado com o ecossistema GitHub.
Escolha GitLab quando...
Precisa de self-hosted gratuito, quer DevSecOps integrado sem ferramentas extras, ou a empresa exige controle total da infraestrutura.
Muitas empresas usam os dois: GitHub para projetos open source e contribuições externas, GitLab internamente para pipelines corporativos com segurança e compliance.
