10 Workflows Esenciales en GitHub Actions para Proyectos Universitarios
10 Workflows Esenciales en GitHub Actions para Proyectos Universitarios
GitHub Actions es una poderosa herramienta de automatización que permite a los desarrolladores crear, probar y desplegar sus aplicaciones directamente desde GitHub. Para docentes universitarios que guían a estudiantes en proyectos de desarrollo de software, aprovechar GitHub Actions puede facilitar la gestión y asegurar que los proyectos cumplan con altos estándares de calidad. A continuación, presentamos 10 workflows esenciales que pueden ser aplicados en proyectos académicos reales.
CI/CD para Aplicaciones Web
El primer paso para cualquier proyecto es garantizar que el código funcione correctamente antes de ser desplegado. Este workflow permite a los estudiantes configurar una pipeline de CI/CD (Integración y Despliegue Continuos) para sus aplicaciones web, asegurando que cualquier cambio en el código sea automáticamente probado y desplegado.
Beneficios:
- Automatiza pruebas y despliegues.
- Garantiza que el código en producción esté siempre funcionando.
Código:
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Deploy to GitHub Pages
if: success()
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build
Automatización de Pruebas Unitarias
Las pruebas unitarias son cruciales para asegurar la calidad del software. Este workflow automatiza la ejecución de pruebas unitarias cada vez que se realiza un push, ayudando a identificar problemas antes de que lleguen a producción.
Beneficios:
- Detecta errores en etapas tempranas.
- Fomenta la práctica de desarrollo orientado a pruebas.
Código:
name: Run Unit Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.9'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest
Linting y Formateo de Código
Mantener un código limpio y bien formateado es esencial para la mantenibilidad a largo plazo. Este workflow automatiza el proceso de linting y formateo, asegurando que todo el código siga un estilo consistente.
Beneficios:
- Facilita la lectura y revisión del código.
- Reduce la deuda técnica en proyectos.
Código:
name: Lint and Format Code
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Lint code
run: npm run lint
- name: Format code
run: npm run format
Generación Automática de Documentación
La documentación es clave en cualquier proyecto educativo. Este workflow permite generar automáticamente la documentación del proyecto a partir de comentarios en el código y publicarla en GitHub Pages.
Beneficios:
- Facilita la comprensión del proyecto para nuevos miembros.
- Asegura que la documentación esté siempre actualizada.
Código:
name: Generate Documentation
on: [push]
jobs:
docs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Generate documentation
run: |
npm install -g jsdoc
jsdoc -c jsdoc.json
- name: Deploy documentation to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
Verificación de Seguridad
La seguridad en el software es fundamental. Este workflow ejecuta un escaneo de seguridad en las dependencias del proyecto, identificando vulnerabilidades que deben ser corregidas.
Beneficios:
- Mejora la seguridad del proyecto.
- Detecta dependencias vulnerables.
Código:
name: Security Check
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run security audit
run: npm audit
Compilación y Pruebas de Aplicaciones Java
Para proyectos en Java, este workflow facilita la compilación y ejecución de pruebas con Maven, asegurando que el código Java sea confiable y eficiente.
Beneficios:
- Automatiza la compilación de proyectos Java.
- Asegura que las pruebas se ejecuten con cada cambio.
Código:
name: Build and Test Java Project
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '11'
- name: Build with Maven
run: mvn clean install
- name: Run tests
run: mvn test
Publicación de Paquetes en NPM
Este workflow automatiza la publicación de paquetes en NPM cada vez que se crea una nueva versión en GitHub, permitiendo a los estudiantes compartir sus bibliotecas de código fácilmente.
Beneficios:
- Facilita la distribución de paquetes de código.
- Automatiza el proceso de versión y publicación.
Código:
name: Publish to NPM
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Publish to NPM
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Integración con Slack para Notificaciones
Las notificaciones automáticas en Slack permiten a los equipos mantenerse informados sobre el estado de los workflows. Este workflow envía una notificación cada vez que un workflow falla o se completa.
Beneficios:
- Mejora la comunicación dentro del equipo.
- Proporciona visibilidad inmediata de los problemas.
Código:
name: Notify Slack on Failure
on: [workflow_run]
jobs:
notify:
if: failure()
runs-on: ubuntu-latest
steps:
- name: Notify Slack
uses: slackapi/slack-github-action@v1.20.0
with:
slack-message: "Workflow ${{ github.workflow }} failed"
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
Workflow para Revisiones de Código
Para fomentar la revisión de código entre estudiantes, este workflow asigna automáticamente revisores a las pull requests, asegurando que cada cambio sea revisado antes de ser fusionado.
Beneficios:
- Promueve buenas prácticas de desarrollo colaborativo.
- Asegura que todo el código sea revisado antes de ser aceptado.
Código:
name: Assign PR Reviewers
on:
pull_request:
types: [opened]
jobs:
assign-reviewers:
runs-on: ubuntu-latest
steps:
- name: Assign reviewers
uses: kentaro-m/auto-assign-action@v1.1.2
with:
config: .github/auto_assign.yml
Limpieza Automática de Ramas Obsoletas
Este workflow elimina automáticamente las ramas que ya han sido fusionadas, ayudando a mantener el repositorio limpio y organizado.
Beneficios:
- Mantiene un repositorio organizado.
- Elimina ramas innecesarias automáticamente.
Código:
name: Delete Merged Branches
on:
push:
branches-ignore:
- main
- develop
jobs:
delete-branches:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Delete merged branches
run: |
git branch --merged | grep -v "\* main" | grep -v "\* develop" | xargs -n 1 git branch -d
Conclusión
Implementar estos workflows en GitHub Actions no solo mejora la calidad y seguridad del software desarrollado en proyectos universitarios, sino que también inculca en los estudiantes las mejores prácticas en desarrollo de software. Estos workflows pueden adaptarse y expandirse para satisfacer las necesidades específicas de cada proyecto, facilitando la enseñanza y el aprendizaje en entornos académicos.
Links de referencia: Marketplaces GitHub Actions