10 Workflows Esenciales en GitHub Actions para Proyectos Universitarios

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

Facebook
Twitter
LinkedIn

Post relacionados

Post recientes

Search