Skip to content

Crypt0xDev/algebra-lineal-solver

Repository files navigation

⚙️ Configuración de GitHub

Este directorio contiene toda la configuración de GitHub para el proyecto Algebra Lineal Solver.


📁 Estructura

.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

🔄 GitHub Actions (CI/CD)

1. ci.yml - Integración Continua

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:

[![CI](https://github.com/Crypt0xDev/algebra-lineal-solver/workflows/CI/badge.svg)](https://github.com/Crypt0xDev/algebra-lineal-solver/actions)
[![codecov](https://codecov.io/gh/Crypt0xDev/algebra-lineal-solver/branch/main/graph/badge.svg)](https://codecov.io/gh/Crypt0xDev/algebra-lineal-solver)

2. code-quality.yml - Análisis de Calidad

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.md
  • pylint-report.txt

3. release.yml - Gestión de Releases

Trigger:

  • Push de tags: v*.*.*
  • Manual (workflow_dispatch)

Proceso:

  1. ✅ Ejecuta suite completa de tests
  2. 📦 Construye distribución (wheel + sdist)
  3. 📝 Genera changelog automático
  4. 🚀 Crea GitHub Release con assets
  5. 🔖 (Opcional) Publica a PyPI

Uso:

# Crear release
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0

4. codeql.yml - Análisis de Seguridad

Trigger:

  • 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

5. dependabot-automerge.yml - Auto-merge de Dependabot

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

6. stale.yml - Gestión de Issues/PRs Inactivos

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

📋 Templates de Issues

🐛 Bug Report

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

✨ Feature Request

Para proponer nuevas funcionalidades.

Incluye:

  • Descripción de la característica
  • Problema que resuelve
  • Solución propuesta
  • Impacto y casos de uso

📚 Documentation

Para mejorar la documentación.

Incluye:

  • Ubicación del problema
  • Descripción de la mejora
  • Beneficio esperado

❓ Question

Para hacer preguntas de uso.

Incluye:

  • Pregunta clara
  • Contexto
  • Lo que ya se intentó

🔀 Template de Pull Request

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.


👥 CODEOWNERS

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.


🛡️ Branch Protection (Recomendado)

Configura en GitHub Settings > Branches:

Para main:

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: @Crypt0xDev

🏷️ Labels Recomendados

Tipo

  • bug - Errores y problemas
  • enhancement - Nuevas características
  • documentation - Mejoras de docs
  • question - Preguntas

Prioridad

  • priority: high - Alta prioridad
  • priority: medium - Media prioridad
  • priority: low - Baja prioridad

Estado

  • needs-triage - Requiere clasificación
  • in-progress - En desarrollo
  • ready-for-review - Listo para revisión
  • blocked - Bloqueado

Área

  • area: algebra - Módulos de álgebra
  • area: graficos - Visualizaciones
  • area: parser - Lectura de ejercicios
  • area: reportes - Generación de reportes
  • area: tests - Testing
  • area: ci - CI/CD

🔧 Configuración Local para Contribuir

1. Configurar Git

# 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

2. Pre-commit Hooks (Opcional)

# Instalar pre-commit
pip install pre-commit

# Configurar hooks
pre-commit install

3. Flujo de Trabajo

# 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

📊 Métricas y Badges

Badges Recomendados para README:

# En README.md principal

[![CI](https://github.com/Crypt0xDev/algebra-lineal-solver/workflows/CI/badge.svg)](https://github.com/Crypt0xDev/algebra-lineal-solver/actions/workflows/ci.yml)
[![Code Quality](https://github.com/Crypt0xDev/algebra-lineal-solver/workflows/Code%20Quality%20Report/badge.svg)](https://github.com/Crypt0xDev/algebra-lineal-solver/actions/workflows/code-quality.yml)
[![CodeQL](https://github.com/Crypt0xDev/algebra-lineal-solver/workflows/CodeQL/badge.svg)](https://github.com/Crypt0xDev/algebra-lineal-solver/actions/workflows/codeql.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
[![codecov](https://codecov.io/gh/Crypt0xDev/algebra-lineal-solver/branch/main/graph/badge.svg)](https://codecov.io/gh/Crypt0xDev/algebra-lineal-solver)

🔍 Troubleshooting

CI falló - ¿Qué hago?

  1. Ver logs: Click en el check fallido en el PR
  2. Tests locales: pytest tests/ -v
  3. Lint local: flake8 src tests
  4. Format: black src tests
  5. Re-push: Los cambios triggean CI nuevamente

¿Cómo actualizo los workflows?

  1. Edita archivos en .github/workflows/
  2. Commit y push
  3. Los cambios se aplicarán en el siguiente trigger

¿Cómo deshabilitar un workflow temporalmente?

En el archivo .yml, comenta o elimina los triggers:

# on:
#   push:
#     branches: [main]

📚 Referencias


🤝 Contribuciones

Para contribuir a la configuración de GitHub:

  1. Lee docs/CONTRIBUTING.md
  2. Prueba cambios en tu fork primero
  3. Crea PR con descripción clara de cambios

⚙️ Configuración profesional para un proyecto académico de calidad

⬆️ Volver al README | 📚 Documentación

About

Sistema académico profesional para la resolución automática de ejercicios de Álgebra Lineal con generación de gráficas 2D/3D y reportes en Word, PDF y LaTeX.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors