Conceptos

GitHub

Plataforma de desarrollo colaborativo construida sobre Git. Más que hosting de repositorios — es el hub central para code review, CI/CD, gestión de proyectos y colaboración open source.

evergreen#tooling#git#collaboration#dx

GitHub es una plataforma que extiende Git con colaboración, automatización y gestión de proyectos. Fundada en 2008, adquirida por Microsoft en 2018, hoy aloja más de 200 millones de repositorios y es el estándar de facto para desarrollo open source.

¿Qué agrega sobre Git?

Git es el motor de control de versiones. GitHub agrega:

  • Pull Requests — propuestas de cambio con code review integrado
  • Issues — tracking de bugs, features y tareas
  • Actions — CI/CD nativo con workflows declarativos
  • Projects — tableros Kanban y planificación
  • Discussions — foros por repositorio
  • Codespaces — entornos de desarrollo en la nube
  • Copilot — asistente de código con IA
  • Security — Dependabot, secret scanning, code scanning

Pull Requests

El flujo central de colaboración:

  1. Crear rama desde main
  2. Hacer commits con cambios
  3. Abrir Pull Request (PR)
  4. Code review — comentarios, sugerencias, aprobaciones
  5. CI checks pasan
  6. Merge a main

Anatomía de un buen PR

## Descripción
Qué cambia y por qué.
 
## Tipo de cambio
- [ ] Bug fix
- [ ] Nueva feature
- [ ] Breaking change
- [ ] Documentación
 
## Testing
Cómo se probó este cambio.
 
## Screenshots (si aplica)

Merge strategies

EstrategiaResultadoCuándo usar
Merge commitPreserva todos los commits + merge commitHistorial completo importa
Squash and mergeUn solo commit en mainPRs con muchos commits WIP
Rebase and mergeCommits individuales sin merge commitHistorial lineal limpio

GitHub Actions

CI/CD declarativo en YAML. Los workflows viven en .github/workflows/.

name: CI
 
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
 
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'
      - run: pnpm install
      - run: pnpm test
      - run: pnpm build

Conceptos clave

  • Workflow — archivo YAML que define la automatización
  • Job — conjunto de steps que corren en el mismo runner
  • Step — comando individual o action reutilizable
  • Action — unidad reutilizable (ej: actions/checkout@v4)
  • Runner — máquina que ejecuta el job (GitHub-hosted o self-hosted)
  • Secret — variable encriptada para tokens y credenciales

Triggers comunes

on:
  push:                          # cualquier push
  pull_request:                  # PRs abiertos/actualizados
  schedule:
    - cron: '0 0 * * *'         # diario a medianoche UTC
  workflow_dispatch:             # manual desde UI
  release:
    types: [published]           # cuando se publica un release

Branch protection

Reglas para proteger ramas críticas:

  • Requerir PR antes de merge
  • Requerir N aprobaciones
  • Requerir status checks (CI debe pasar)
  • Requerir conversaciones resueltas
  • Requerir firma de commits
  • Bloquear force push

Configurar en: Settings → Branches → Add rule

GitHub CLI (gh)

Interactuar con GitHub desde la terminal:

# Autenticación
gh auth login
 
# Repositorios
gh repo create mi-proyecto --public
gh repo clone owner/repo
gh repo fork owner/repo
 
# Pull Requests
gh pr create --title "feat: add login" --body "Description"
gh pr list
gh pr checkout 123
gh pr merge 123 --squash
gh pr review 123 --approve
 
# Issues
gh issue create --title "Bug: login fails"
gh issue list --label bug
gh issue close 456
 
# Actions
gh run list
gh run view 789
gh run watch 789
 
# Releases
gh release create v1.0.0 --generate-notes

GitHub vs alternativas

PlataformaFortalezaConsideración
GitHubEcosistema, comunidad, ActionsPropiedad de Microsoft
GitLabDevOps completo, self-hostedUI más compleja
BitbucketIntegración Atlassian (Jira)Menos comunidad open source
Azure DevOpsEnterprise, integración AzureCurva de aprendizaje

Buenas prácticas

  1. Commits atómicos — cada commit hace una cosa
  2. Conventional commitsfeat:, fix:, chore:, docs:
  3. PRs pequeños — más fáciles de revisar, menos riesgo
  4. Branch protection — nunca push directo a main
  5. CODEOWNERS — asignar reviewers automáticamente
  6. Templates — PR e issue templates para consistencia
  7. Dependabot — actualizaciones de seguridad automáticas

Archivos especiales

.github/
├── workflows/           # GitHub Actions
├── CODEOWNERS          # Asignación automática de reviewers
├── PULL_REQUEST_TEMPLATE.md
├── ISSUE_TEMPLATE/
│   ├── bug_report.md
│   └── feature_request.md
├── FUNDING.yml         # Sponsors
└── dependabot.yml      # Configuración Dependabot

¿Por qué importa?

GitHub no es solo un hosting de repositorios — es la plataforma donde convergen el código, la revisión, el CI/CD, la gestión de proyectos y la colaboración. Dominar sus capacidades nativas (Actions, branch protection, CLI) reduce la dependencia de herramientas externas y acelera el ciclo de desarrollo.

Referencias

Conceptos