Este directorio contiene toda la configuración de GitHub para el proyecto Algebra Lineal Solver.
.github/
├── workflows/ # GitHub Actions (CI/CD)
│ ├── ci.yml # Integración continua
│ ├── code-quality.yml # Análisis de calidad
│ ├── codeql.yml # Análisis de seguridad CodeQL
│ ├── dependabot-automerge.yml # Auto-merge de Dependabot
│ ├── stale.yml # Gestión de issues/PRs inactivos
│ └── release.yml # Gestión de releases
│
├── ISSUE_TEMPLATE/ # Templates para issues
│ ├── bug_report.yml # Reporte de bugs
│ ├── feature_request.yml # Solicitud de características
│ ├── documentation.yml # Mejoras de documentación
│ ├── question.yml # Preguntas/ayuda
│ └── config.yml # Configuración de templates
│
├── dependabot.yml # Configuración de Dependabot
├── FUNDING.yml # Configuración de sponsors
├── PULL_REQUEST_TEMPLATE.md # Template para PRs
├── CODEOWNERS # Propietarios del código
└── README.md # Este archivo
Trigger: Push/PR a main
Jobs:
- ✅ Lint & Format Check (black, isort, flake8)
- ✅ Type Checking (mypy)
- ✅ Tests - Matrix multi-versión:
- Python: 3.9, 3.10, 3.11, 3.12
- OS: Ubuntu, Windows, macOS
- Cobertura: ≥5%
- ✅ Security Checks (safety, bandit)
- ✅ Installation Test
- ✅ CI Status Check (required para merge)
Badges para README:
[](https://github.com/Crypt0xDev/algebra-lineal-solver/actions)
[](https://codecov.io/gh/Crypt0xDev/algebra-lineal-solver)Trigger:
- Push/PR a
main - Semanalmente (lunes 00:00)
Jobs:
- 📊 Análisis de Complejidad (radon)
- 📈 Índice de Mantenibilidad
- 🔍 Métricas LOC/LLOC
- 🎯 PyLint Score
- 📝 Deuda Técnica (TODOs/FIXMEs)
Artefactos:
quality-report.mdpylint-report.txt
Trigger:
- Push de tags:
v*.*.* - Manual (workflow_dispatch)
Proceso:
- ✅ Ejecuta suite completa de tests
- 📦 Construye distribución (wheel + sdist)
- 📝 Genera changelog automático
- 🚀 Crea GitHub Release con assets
- 🔖 (Opcional) Publica a PyPI
Uso:
# Crear release
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0Trigger:
- Push/PR a
main - Semanalmente (jueves 03:00)
Proceso:
- 🔒 Análisis estático de código con CodeQL
- 🛡️ Detección de vulnerabilidades
- 📊 Reporte de seguridad en GitHub Security
Características:
- Análisis automático de Python
- Detección de patrones de seguridad
- Integración con GitHub Advanced Security
Trigger:
- PRs creados por Dependabot
Proceso:
- ✅ Auto-aprueba actualizaciones patch y minor
- 🔄 Habilita auto-merge automático
⚠️ Notifica para actualizaciones major
Beneficios:
- Reduce overhead de actualizaciones menores
- Mantiene dependencias actualizadas
- Requiere revisión manual solo para cambios major
Trigger:
- Diariamente a las 00:30
- Manual (workflow_dispatch)
Configuración:
- Issues: 60 días inactivos → marcado como stale
- PRs: 30 días inactivos → marcado como stale
- Cierre automático: 14 días después de marcar como stale
Labels exentos:
- Issues:
pinned,security,help-wanted,good-first-issue - PRs:
pinned,security,work-in-progress
Para reportar errores y problemas.
Incluye:
- Descripción del bug
- Pasos para reproducir
- Comportamiento esperado vs actual
- Entorno (OS, Python, versión)
- Logs y capturas
Para proponer nuevas funcionalidades.
Incluye:
- Descripción de la característica
- Problema que resuelve
- Solución propuesta
- Impacto y casos de uso
Para mejorar la documentación.
Incluye:
- Ubicación del problema
- Descripción de la mejora
- Beneficio esperado
Para hacer preguntas de uso.
Incluye:
- Pregunta clara
- Contexto
- Lo que ya se intentó
Formato estandarizado para PRs que incluye:
- 📝 Descripción de cambios
- 🔗 Issue relacionado
- 🎯 Tipo de cambio
- 🧪 Detalles de testing
- ✅ Checklist de calidad
- 📊 Análisis de impacto
Uso: Automáticamente se carga cuando creas un PR.
Define propietarios del código para revisión automática.
Configuración actual:
- Todo el código: @Crypt0xDev
- Áreas específicas:
- Configuración
- Documentación
- Código fuente
- Tests
- CI/CD
Cómo funciona: Cuando se crea un PR que modifica archivos en áreas definidas, se solicita automáticamente revisión a los propietarios.
Configura en GitHub Settings > Branches:
Require pull request reviews: ✅
Required approvals: 1
Require status checks to pass: ✅
Required checks:
- CI Status Check
- Lint & Format Check
- Tests (Python 3.11 - ubuntu-latest)
Require branches to be up to date: ✅
Require signed commits: ✅ (opcional)
Include administrators: ✅
Restrict who can push: ✅
Allowed: @Crypt0xDevbug- Errores y problemasenhancement- Nuevas característicasdocumentation- Mejoras de docsquestion- Preguntas
priority: high- Alta prioridadpriority: medium- Media prioridadpriority: low- Baja prioridad
needs-triage- Requiere clasificaciónin-progress- En desarrolloready-for-review- Listo para revisiónblocked- Bloqueado
area: algebra- Módulos de álgebraarea: graficos- Visualizacionesarea: parser- Lectura de ejerciciosarea: reportes- Generación de reportesarea: tests- Testingarea: ci- CI/CD
# Configurar nombre y email
git config user.name "Tu Nombre"
git config user.email "tu@email.com"
# Habilitar firma de commits (opcional)
git config commit.gpgsign true# Instalar pre-commit
pip install pre-commit
# Configurar hooks
pre-commit install# 1. Crear rama desde main
git checkout main
git pull origin main
git checkout -b feature/nueva-caracteristica
# 2. Hacer cambios y commits
git add .
git commit -m "feat: descripción del cambio"
# 3. Ejecutar checks locales
make lint
make test
# 4. Push y crear PR
git push origin feature/nueva-caracteristica
# Luego crear PR en GitHub# En README.md principal
[](https://github.com/Crypt0xDev/algebra-lineal-solver/actions/workflows/ci.yml)
[](https://github.com/Crypt0xDev/algebra-lineal-solver/actions/workflows/code-quality.yml)
[](https://github.com/Crypt0xDev/algebra-lineal-solver/actions/workflows/codeql.yml)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://codecov.io/gh/Crypt0xDev/algebra-lineal-solver)- Ver logs: Click en el check fallido en el PR
- Tests locales:
pytest tests/ -v - Lint local:
flake8 src tests - Format:
black src tests - Re-push: Los cambios triggean CI nuevamente
- Edita archivos en
.github/workflows/ - Commit y push
- Los cambios se aplicarán en el siguiente trigger
En el archivo .yml, comenta o elimina los triggers:
# on:
# push:
# branches: [main]Para contribuir a la configuración de GitHub:
- Lee docs/CONTRIBUTING.md
- Prueba cambios en tu fork primero
- Crea PR con descripción clara de cambios
⚙️ Configuración profesional para un proyecto académico de calidad