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