GitHub Action: Pruebas CI/CD
Este flujo de trabajo de GitHub Action está diseñado para optimizar y automatizar los procesos de CI/CD de tu proyecto. El flujo de trabajo se activa en pull requests y pushes a la rama main. Realiza varias tareas clave incluyendo linting, verificaciones de pre-commit, validación de actualización del proyecto y ejecución de pruebas con reportes de cobertura.
Detalles del Flujo de Trabajo
Disparadores (on)
pull_request: El flujo de trabajo se ejecuta cuando se abre o actualiza un pull request.push: El flujo de trabajo se activa para pushes a la ramamain.
Resumen de Jobs
El flujo de trabajo define cuatro jobs:
actionlint: Valida la sintaxis y estructura de los archivos de flujo de trabajo de GitHub Action.lint-cruft: Asegura que no existan archivos.rej, verificando que las actualizaciones del proyecto se aplicaron correctamente.pre-commit: Ejecuta los hooks de pre-commit para aplicar estándares de código y formateo en todos los archivos.test: Ejecuta pruebas unitarias con reportes de cobertura y sube los resultados a Codecov.
Detalles de los Jobs
1. actionlint
runs-on: ubuntu-latest
Pasos:
- Checkout: Usa
actions/checkout@v4para obtener el repositorio. - Descargar actionlint: Obtiene
actionlintusando un script bash. - Verificar archivos de flujo de trabajo: Ejecuta
actionlintpara validar los archivos de flujo de trabajo.
2. lint-cruft
runs-on: ubuntu-latest
Pasos:
- Checkout: Usa
actions/checkout@v4para obtener el repositorio. - Verificar archivos
.rej: Falla el job si se encuentran archivos.rej, indicando una actualización no exitosa de la estructura del proyecto.
3. pre-commit
runs-on: ubuntu-latest
Pasos:
- Checkout: Usa
actions/checkout@v4para obtener el repositorio. - Instalar
uv: Configura la herramientauvusandoastral-sh/setup-uv@v6. - Ejecutar hooks de pre-commit: Ejecuta todos los hooks de pre-commit en todo el repositorio, mostrando cualquier fallo con diffs coloreados.
4. test
runs-on: ubuntu-latest
Pasos:
- Checkout: Usa
actions/checkout@v4para obtener el repositorio. - Instalar
uv: Configura la herramientauvusandoastral-sh/setup-uv@v6. - Configurar Python: Configura Python según el archivo
.python-versionusandoactions/setup-python@v5. - Instalar el proyecto: Instala el proyecto con todos los extras y dependencias de desarrollo usando
uv sync. - Ejecutar pruebas con cobertura: Ejecuta pruebas con
pytesty genera un reporte de cobertura en formato XML. - Subir reporte de cobertura: Sube el reporte de cobertura a Codecov usando
codecov/codecov-action@v5. Requiere un secretoCODECOV_TOKENalmacenado en la configuración del repositorio.
En resumen, este flujo de trabajo automatiza el linting, la validación de actualización del proyecto, las verificaciones de pre-commit, las pruebas y los reportes de cobertura para un pipeline de CI/CD robusto.