ULC Lab · implementação reproduzível
Laboratório: Pipeline CI/CD automatizado com GitLab Runner em ambiente local
Você vai criar e executar um pipeline CI/CD completo usando GitLab Runner em uma máquina virtual Linux, com build, teste e deploy simulados. Em cerca de 2 horas, terá um fluxo funcional de integração e entrega contínua, pronto para adaptar a projetos reais.

- Duração estimada
- 120 min
- Passos
- 11
- Validações
- 4
- Versões da documentação consultada
- GitLab Community Edition a versão estável atual · GitLab Runner a versão estável atual · Docker a versão estável atual · Git a versão estável atual
Este laboratório ensina como instalar, registrar e operar o GitLab Runner (código aberto, MIT) para automatizar pipelines CI/CD. Você vai entender cada etapa: desde a preparação do ambiente, configuração do Runner, criação do pipeline até a execução real do fluxo, usando apenas software livre. O foco é garantir domínio prático do ciclo de build, teste e deploy automatizado, essencial para equipes modernas de desenvolvimento, inclusive em redes de fibra dedicada como a da Upnetix.
Topologia
Uma máquina virtual Linux (ex: Ubuntu 22.04, IP 192.168.56.10) roda GitLab Runner e um projeto local. O Runner se conecta à API de um servidor GitLab CE (Community Edition) rodando em outra VM (192.168.56.20). O pipeline é disparado por push via Git. O Runner executa jobs de build, teste e um deploy simulado (cópia de arquivos para /tmp/deploy). Comunicação apenas via rede privada.
┌──────────────┐ push/pull ┌──────────────┐
│ Dev Machine │ <-------------------> │ GitLab CE │
│ (opcional) │ │192.168.56.20 │
└─────┬────────┘ └─────┬────────┘
│ CI/CD jobs (API) │
│-------------------------------------│
│ │
┌─────▼────────┐ ┌─────▼────────┐
│ GitLab Runner│ │ Projeto │
│192.168.56.10 │ │(repo local) │
└──────────────┘ └──────────────┘Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Linux (Ubuntu 22.04 LTS ou Debian 11+) | 1 vCPU, 2 GB RAM, 10 GB disco, acesso root |
| VM Linux (Ubuntu 22.04 LTS ou Debian 11+) | 1 vCPU, 2 GB RAM, 20 GB disco, acesso root (para GitLab CE) |
| GitLab Community Edition | MIT/EE SSPL · a versão estável atual |
| GitLab Runner | MIT · a versão estável atual |
| Docker | Apache 2.0 · a versão estável atual |
| Git | GPLv2 · a versão estável atual |
Roteiro
- Preparar as VMs e instalar dependências
Garanta que as duas VMs estejam na mesma rede privada. Atualize os pacotes e instale curl, Docker e Git nas duas VMs. O Docker é necessário para executar jobs isolados no Runner.
sudo apt update && sudo apt install -y curl git docker.ioO que você deve ver: Pacotes instalados sem erros.
- Instalar o GitLab CE na VM 192.168.56.20
O GitLab CE será o servidor de repositórios e pipelines. Siga o guia oficial para instalar via pacote DEB.
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo EXTERNAL_URL="http://192.168.56.20" apt install gitlab-ceO que você deve ver: GitLab CE instalado e acessível via navegador em http://192.168.56.20
- Configurar usuário e projeto no GitLab CE
Crie um usuário admin e um projeto novo chamado 'demo-ci'. Isso permite versionar o pipeline e acionar builds.
Acesse http://192.168.56.20, siga o onboarding para criar usuário admin, faça login e crie o projeto 'demo-ci'.O que você deve ver: Projeto 'demo-ci' criado e visível no dashboard.
- Clonar o projeto demo-ci na VM do Runner
O Runner precisa de um clone local do repositório para executar jobs. Clone usando SSH ou HTTP.
git clone http://192.168.56.20/demo-ci.git cd demo-ciO que você deve ver: Repositório clonado e diretório 'demo-ci' criado.
- Instalar o GitLab Runner na VM 192.168.56.10
O Runner é o agente que executa os jobs do pipeline. Instale usando o script oficial.
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt install gitlab-runnerO que você deve ver: GitLab Runner instalado. Verifique com 'gitlab-runner --version'.
- Registrar o Runner no GitLab CE
O Runner precisa ser registrado para aceitar jobs desse projeto. Use o token do projeto em Settings > CI/CD > Runners.
sudo gitlab-runner register # URL: http://192.168.56.20 # Token: (copie do GitLab) # executor: docker # image: ubuntu:22.04O que você deve ver: Runner registrado e listado em Settings > CI/CD > Runners do projeto.
- Criar o arquivo .gitlab-ci.yml
Defina o pipeline com três stages: build, test, deploy. O deploy será uma cópia simulada.
cat > .gitlab-ci.yml <<EOF stages: - build - test - deploy build_job: stage: build script: - echo "Compilando..." - mkdir build && echo 'hello' > build/app.txt test_job: stage: test script: - cat build/app.txt | grep hello deploy_job: stage: deploy script: - mkdir -p /tmp/deploy - cp build/app.txt /tmp/deploy/ EOFO que você deve ver: Arquivo .gitlab-ci.yml criado no diretório do projeto.
- Commit e push do pipeline para o GitLab CE
Versione o pipeline e envie para o servidor. Isso dispara o pipeline automaticamente.
git add .gitlab-ci.yml git commit -m "Adiciona pipeline CI/CD" git push origin mainO que você deve ver: Pipeline iniciado no GitLab CE. Veja em CI/CD > Pipelines.
- Acompanhar a execução do pipeline
No GitLab CE, monitore os jobs em tempo real. O Runner executa cada etapa via Docker.
Acesse http://192.168.56.20/demo-ci/pipelinesO que você deve ver: Todos os jobs (build, test, deploy) executados com sucesso (status verde).
- Verificar o resultado do deploy simulado
Confirme que o arquivo foi copiado para /tmp/deploy na VM do Runner.
ls -l /tmp/deploy/app.txtO que você deve ver: Arquivo app.txt presente em /tmp/deploy.
- Testar alteração e re-executar pipeline
Altere o conteúdo do app.txt, faça commit e push. O pipeline deve rodar novamente.
echo 'hello upnetix' > build/app.txt git add build/app.txt git commit -m "Atualiza app.txt" git push origin mainO que você deve ver: Novo pipeline iniciado e concluído, novo conteúdo em /tmp/deploy/app.txt.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar status do Runner | sudo gitlab-runner status | Status 'active' ou 'running' |
| Verificar execução dos jobs | Acesse CI/CD > Jobs no GitLab CE | Todos os jobs marcados como 'passed' |
| Verificar arquivo de deploy | cat /tmp/deploy/app.txt | Conteúdo corresponde ao commit mais recente |
| Verificar logs do Runner | sudo journalctl -u gitlab-runner | Sem erros críticos nos logs |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Pipeline não inicia após push | Runner não registrado ou offline | Verifique registro e status do Runner |
| Job falha no stage build | Permissões insuficientes no diretório | Garanta permissões corretas para o usuário do Runner |
| Job de deploy falha ao copiar arquivo | Diretório /tmp/deploy não existe ou permissão negada | Inclua 'mkdir -p /tmp/deploy' no script do job |
| Runner não aparece no GitLab CE | Token de registro incorreto | Registre novamente usando o token correto do projeto |
Segurança e hardening
- Não exponha o GitLab CE na internet sem HTTPS e autenticação forte
- Execute o Runner em usuário dedicado, nunca como root
- Limite permissões do diretório /tmp/deploy
- Remova tokens de registro após uso
Checklist final
Referências
- GitLab Runner Documentation · GitLab Inc. (docs.gitlab.com)
- GitLab CI/CD Pipelines Documentation · GitLab Inc. (docs.gitlab.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 2 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
