Proyecto integrador

Por: Artiko
githubproyectochecklistdevops

Proyecto integrador

Llegó el momento de juntar todo. Vamos a armar el .github/ completo de un proyecto ficticio pero realista: acme-api, una API en Node.js. Cada archivo que agreguemos corresponde a algo que ya vimos en el curso; al final tenés un .github que podés adaptar a tus propios repos casi tal cual.

El árbol final

flowchart TD
    G[".github/"]
    G --> WF["workflows/"]
    WF --> CI["ci.yml"]
    WF --> REL["release.yml"]
    G --> ACT["actions/setup-node/action.yml"]
    G --> IT["ISSUE_TEMPLATE/"]
    IT --> BUG["bug_report.yml"]
    IT --> CFG["config.yml"]
    G --> PRT["PULL_REQUEST_TEMPLATE.md"]
    G --> CO["CODEOWNERS"]
    G --> SEC["SECURITY.md"]
    G --> CONTRIB["CONTRIBUTING.md"]
    G --> FUND["FUNDING.yml"]
    G --> DEP["dependabot.yml"]
    G --> LAB["labeler.yml"]
    G --> RD["release-drafter.yml"]
    G --> COP["copilot-instructions.md"]

Recorrido archivo por archivo

ArchivoQué resuelveCapítulo
workflows/ci.ymlCorre lint y tests en cada push y PRCap. 2
workflows/release.ymlPublica releases al taggearCap. 3
actions/setup-node/action.ymlComposite action reutilizable para preparar NodeCap. 4
Permisos de GITHUB_TOKEN en los workflowsPrincipio de mínimo privilegioCap. 6
ISSUE_TEMPLATE/bug_report.ymlFormulario guiado para reportar bugsCap. 10
ISSUE_TEMPLATE/config.ymlEnlaces externos y config del selector de issuesCap. 10
PULL_REQUEST_TEMPLATE.mdDescripción de PR precompletada con checklistCap. 11
CODEOWNERSRevisores automáticos por rutasCap. 8
SECURITY.mdPolítica de reporte de vulnerabilidadesCap. 9
CONTRIBUTING.mdCómo contribuir al proyectoCap. 7
FUNDING.ymlBotón de patrocinio del repoCap. 7
dependabot.ymlVersion updates de npm y github-actionsCap. 12
labeler.ymlEtiquetado automático de PRs por archivosCap. 13
release-drafter.ymlDraft continuo de notas de releaseCap. 13
copilot-instructions.mdContexto persistente para CopilotCap. 14

Cómo encaja todo

flowchart LR
    DEV["Contribuidor"] -->|abre issue| IT["ISSUE_TEMPLATE"]
    DEV -->|abre PR| PRT["PR template"]
    PRT --> CI["ci.yml corre<br/>lint + tests"]
    PRT --> LAB["labeler etiqueta"]
    PRT --> CO["CODEOWNERS<br/>pide review"]
    CI --> MERGE{"¿checks OK +<br/>review OK?"}
    CO --> MERGE
    MERGE -->|sí| MAIN["merge a main"]
    MAIN --> RD["release-drafter<br/>actualiza el draft"]
    DEP["dependabot"] -.->|PRs periódicos| CI

Un contribuidor abre una issue con el formulario guiado o un PR con la descripción precompletada. Al abrir el PR, CI corre lint y tests, labeler lo etiqueta y CODEOWNERS pide la review de quien corresponde. Cuando pasan los checks y las aprobaciones, se mergea a main, y ahí release-drafter actualiza el borrador de la próxima release. En paralelo, Dependabot abre PRs para mantener todo al día. Nadie coordina esto a mano: lo hace el .github.

Checklist final

Antes de dar por terminado tu .github, repasá cada decisión clave del curso:

Cierre del curso

¡Felicitaciones por llegar hasta acá! Recorriste toda la carpeta .github de punta a punta: desde los fundamentos de Actions y sus triggers, pasando por seguridad, workflows reutilizables, community health files, CODEOWNERS, SECURITY, templates, Dependabot y la automatización del repositorio, hasta el contexto persistente para Copilot. Ahora tenés las piezas y, más importante, el criterio para decidir cuáles usar y por qué. El mejor siguiente paso es aplicarlo: tomá un repo real, armá su .github con este checklist a mano y ajustalo a tu contexto. La plataforma trabaja para vos cuando le decís, con archivos en el lugar correcto, cómo querés que trabaje.


AnteriorCapítulo 14: GitHub Copilot

¿Querés repasar algún tema? Volvé al Índice y elegí el capítulo que quieras revisitar.