Nesta aula, exploraremos as plataformas Git mais populares: GitHub, GitLab e Bitbucket. Elas são fundamentais no ecossistema DevOps, oferecendo hospedagem de repositórios, controle de versão e ferramentas colaborativas. Compreender suas diferenças e recursos ajuda a escolher a melhor opção para cada projeto.

As plataformas Git vão além do simples armazenamento de código: integram issues, pull requests, CI/CD e wikis, tornando-se o centro da colaboração de equipes de desenvolvimento. Veremos como cada uma se destaca e como selecionar a mais adequada.

GitHub, GitLab, Bitbucket

O GitHub é a plataforma mais conhecida, com maior comunidade e integrações. Oferece repositórios públicos gratuitos ilimitados e planos pagos para privados. É propriedade da Microsoft e possui Actions para CI/CD, além de um marketplace rico.

O GitLab é uma plataforma completa de DevOps, com CI/CD integrado desde o início. Oferece auto-hospedagem (self-hosted) e versão SaaS. Seu foco em todo o ciclo de vida do desenvolvimento o torna popular em empresas que buscam uma solução única.

O Bitbucket, da Atlassian, integra-se fortemente com Jira e Trello. Oferece repositórios privados gratuitos para pequenas equipes e suporte a Mercurial (embora esteja sendo descontinuado). É comum em ambientes que já usam produtos Atlassian.

# Exemplo: clonar um repositório do GitHub
git clone https://github.com/usuario/repo.git

# GitLab
git clone https://gitlab.com/usuario/repo.git

# Bitbucket
git clone https://bitbucket.org/usuario/repo.git

Recursos (issues, PRs, CI)

Issues são tarefas, bugs ou melhorias rastreáveis. Permitem discussão, atribuição e etiquetas. Pull Requests (PRs) ou Merge Requests (no GitLab) são solicitações de mesclagem de alterações, com revisão de código e discussão integrada.

A Integração Contínua (CI) automatiza testes e builds a cada push. GitHub Actions, GitLab CI/CD e Bitbucket Pipelines são exemplos. Eles permitem pipelines declarativos em YAML, executando em runners ou agents.

# Exemplo de pipeline GitLab (.gitlab-ci.yml)
stages:
  - test
  - deploy

test-job:
  stage: test
  script:
    - echo "Running tests"
    - npm test

deploy-job:
  stage: deploy
  script:
    - echo "Deploying"
    - npm run deploy

O GitHub Actions usa arquivos .github/workflows/*.yml:

# Exemplo de workflow GitHub Actions
name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm install
      - run: npm test

Escolhendo

A escolha depende de fatores como custo, integrações, necessidades de CI/CD e preferência por auto-hospedagem. O GitHub é ideal para projetos open source e comunidades. O GitLab é forte para empresas que querem um pipeline completo integrado. O Bitbucket é adequado para equipes que já usam Jira.

Para projetos privados e equipes pequenas, o Bitbucket oferece repositórios gratuitos. O GitLab tem uma versão gratuita generosa. O GitHub também tem planos gratuitos com repositórios privados, mas com limitações de Actions. Considere também a facilidade de migração e a maturidade da plataforma.

Open source

O GitHub é o lar da maioria dos projetos open source, com recursos como GitHub Sponsors e comunidade ativa. O GitLab também hospeda projetos open source e contribui com o próprio código aberto. O Bitbucket tem menos projetos open source, mas oferece suporte.

Plataformas open source como GitLab (Community Edition) permitem auto-hospedagem total, evitando vendor lock-in. O GitHub não é open source, mas sua versão Enterprise pode ser auto-hospedada. A escolha pode refletir valores da comunidade e necessidades de privacidade.

Boas práticas

Mantenha os repositórios organizados com issues e milestones. Use branches e PRs para revisão de código. Configure CI desde o início para garantir qualidade. Documente o processo de contribuição em um arquivo CONTRIBUTING.md.

Referências

Exercícios

  1. Qual plataforma Git é conhecida por oferecer CI/CD integrado desde o início e permitir auto-hospedagem?

    ✓ Resposta: GitLab
  2. Cite dois recursos comuns a GitHub, GitLab e Bitbucket que auxiliam na colaboração em equipe.

    ✓ Resposta: Issues e Pull Requests (Merge Requests).
  3. Qual plataforma é mais indicada para projetos open source devido à sua grande comunidade?

    ✓ Resposta: GitHub.
  4. Qual é a vantagem de escolher uma plataforma que oferece auto-hospedagem (self-hosted)?

    ✓ Resposta: Maior controle sobre os dados, segurança e personalização, além de evitar dependência de terceiros.
  5. O que são pipelines em CI/CD e qual o formato de arquivo comum para defini-los?

    ✓ Resposta: Pipelines são sequências automatizadas de etapas (testes, build, deploy). O formato comum é YAML (ex: .gitlab-ci.yml, .github/workflows/*.yml).