GitHub vs GitLab: O Ecossistema
Pipeline as Code, Actions, Issues e quando escolher um ou outro.
Git é a ferramenta. GitHub e GitLab são plataformas de colaboração com filosofias diferentes.
O Grande Duelo: Filosofia
- GitHub: Ecossistema modular. Foco em comunidade, Open Source e integrações (Marketplace). “Faça uma coisa e integre com o resto”.
- GitLab: “One DevOps Platform”. Tudo integrado nativamente (CI, CD, Registry, Security, Monitoring). “Tudo na caixa”.
Comparativo CI/CD
GitHub Actions
Baseado em Eventos e Arquivos YAML modulares.
- Vantagem: Marketplace gigante. Copiar/Colar actions prontas (ex:
actions/checkout,docker/build-push-action). - Uso:
.github/workflows/main.yml.
GitLab CI
Baseado em Estágios (stages) e um único (ou inclusos) .gitlab-ci.yml.
- Vantagem: Visão de pipeline unificada, muito maduro para Enterprise e Kubernetes. Runners fáceis de gerenciar.
Ferramentas Essenciais do GitHub
1. Issues & Projects
Não use Trello separado se não precisar.
- Issues: Rastreamento de bugs e tarefas. Veja o tópico dedicado de Gestão de Issues para entender como estruturar templates e labels.
- Projects (V2): Kanban board integrado para gestão visual.
2. Pull Requests (PRs)
O coração da colaboração.
- Code Review: Não aceite código sem revisão.
- Protect branches: Configure nas settings. Impeça push direto na
main. Exija 1 ou 2 reviews para merge. - Checks obrigatórios: O botão de merge fica verde só se a CI passar.
3. GitHub Actions (Exemplo Prático C/Make)
name: Build Firmware
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Toolchain
run: sudo apt-get install -y gcc-arm-none-eabi make
- name: Compile
run: make all
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: firmware.bin
path: build/firmware.bin
Isso garante que todo commit compila. Se quebrar, você recebe e-mail na hora.
Codespaces
Uma VM Linux completa no browser. Útil para onboardar novos devs sem eles precisarem instalar toolchain localmente. Configure via .devcontainer.
Progresso do Tópico