GitLab
1. Introdução ao GitLab
1.1 O que é GitLab?
GitLab é uma plataforma completa de DevOps baseada em Git que oferece:
• Repositórios Git (como GitHub).
• CI/CD integrado (pipelines de automação).
• Gestão de projetos (issues, milestones, boards).
• Monitoramento e segurança.
• Hospedagem própria (self-hosted) ou na nuvem (SaaS).
1.2 GitLab vs. GitHub vs. Bitbucket
Recurso GitLab GitHub Bitbucket
Repositórios (ilimitados em free tier) (públicos grátis) (50 usuários grátis)
CI/CD (Integrado nativamente) (GitHub Actions) (Bitbucket Pipelines)
(Versão (Somente GitHub (Somente Bitbucket
Self-Hosting
Community/Enterprise) Enterprise) Data Center)
Boards
(Integrado) (GitHub Projects) (Jira integrado)
Kanban
1.3 Casos de Uso do GitLab
• Desenvolvimento colaborativo (versionamento Git).
• Automação de testes e deploy (CI/CD).
• Gestão ágil (issues, milestones, sprints).
• Segurança de código (SAST, DAST).
2. Instalação e Configuração do GitLab
2.1 GitLab SaaS (Cloud)
• Acesse [Link] e crie uma conta.
2.2 GitLab Self-Hosted
• Opção 1: Omnibus Package (Linux)
sh
Copy
# Ubuntu/Debian
sudo apt update && sudo apt install -y curl openssh-server ca-certificates
curl [Link] | sudo bash
sudo apt install gitlab-ee
sudo gitlab-ctl reconfigure
• Opção 2: Docker
sh
Copy
docker run --detach \
--hostname [Link] \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
2.3 Configuração Inicial
1. Acesse [Link] (self-hosted) ou [Link]
2. Defina senha de root (self-hosted).
3. Crie um novo projeto ou importe um repositório existente.
3. Fundamentos do GitLab
3.1 Estrutura do GitLab
• Grupos → Projetos → Repositórios → Branches.
• Ferramentas integradas:
o Issues (tarefas).
o Merge Requests (MRs) (equivalente a Pull Requests no GitHub).
o Wiki (documentação).
o CI/CD Pipelines.
3.2 Criando um Projeto
1. Novo Projeto → Create blank project.
2. Escolha visibilidade (Public, Internal, Private).
3. Clone o repositório:
sh
Copy
git clone [Link]
3.3 Ciclo de Trabalho Básico
1. Crie um branch:
sh
Copy
git checkout -b feature/login
2. Faça commits e envie para o GitLab:
sh
Copy
git add .
git commit -m "Adiciona sistema de login"
git push origin feature/login
3. Abra um Merge Request (MR) no GitLab para revisão.
4. Merge Requests (MRs) e Code Review
4.1 O que é um Merge Request?
• Solicitação para mesclar um branch em outro (ex.: feature/login → main).
4.2 Criando um MR
1. Vá para Merge Requests → New Merge Request.
2. Selecione Source Branch (seu branch) e Target Branch (main).
3. Adicione revisores (Assignees).
4. Habilite Merge When Pipeline Succeeds (se usar CI/CD).
4.3 Boas Práticas em MRs
• Título descritivo: "feat: Adiciona autenticação JWT".
• Descrição detalhada: O que foi alterado e por quê.
• Reviewers: Peça revisão a colegas.
• Pipeline verde: Certifique-se de que os testes passem antes de mesclar.
5. CI/CD no GitLab
5.1 O que é CI/CD?
• CI (Continuous Integration): Executa testes automaticamente a cada commit.
• CD (Continuous Deployment): Automação do deploy em ambientes (dev, staging, prod).
5.2 Arquivo .[Link]
Exemplo básico:
yaml
Copy
stages:
- test
- deploy
test_job:
stage: test
script:
- npm install
- npm test
deploy_to_staging:
stage: deploy
script:
- echo "Deploying to staging..."
only:
- main
5.3 Runners (Executores de Pipeline)
• GitLab Shared Runners: Disponíveis no SaaS.
• Self-Hosted Runners: Instalados em sua infraestrutura.
sh
Copy
# Registrar um runner (Linux)
gitlab-runner register
6. Gestão de Projetos no GitLab
6.1 Issues (Tarefas)
• Crie issues para bugs, features e tarefas.
• Use labels (bug, enhancement).
• Atribua a assignees (responsáveis).
6.2 Milestones (Marcos)
• Agrupe issues em sprints ou versões (ex.: "Release v1.0").
6.3 Boards Kanban
• Visualize tasks em colunas (To Do, Doing, Done).
7. Segurança e Monitoramento
7.1 Security Scanning
• SAST (Static Application Security Testing).
• DAST (Dynamic Application Security Testing).
• Dependency Scanning (vulnerabilidades em dependências).
7.2 Monitoramento com Prometheus
• GitLab inclui integração com Prometheus para métricas em tempo real.
8. Comandos Avançados e Troubleshooting
Comando/Funcionalidade Descrição
git rebase -i HEAD~3 Edita últimos 3 commits
git cherry-pick <commit> Aplica um commit específico
Pipeline Schedules Executa pipelines agendadas
Environments Gerencia ambientes (staging, production)
9. Recursos para Aprofundamento
• Documentação Oficial: [Link]
• GitLab Learn: [Link]
• Cursos: Udemy, Pluralsight, GitLab YouTube.