Workflow de GitHub Actions para Python (pytest)

Un workflow de integración continua para un proyecto Python: instala las dependencias y ejecuta las pruebas con pytest en varias versiones de Python, con caché de pip. Este es el YAML exacto que genera la aplicación.

Cuándo usarla

  • Tu proyecto Python tiene un requirements.txt y pruebas con pytest.
  • Quieres comprobar que funciona en varias versiones de Python a la vez.
  • Quieres un punto de partida seguro (permisos mínimos, acciones fijadas) para ampliarlo.

El workflow completo

Guárdalo como .github/workflows/python-ci.yml en tu repositorio
name: CI Python
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  workflow_dispatch:
permissions:
  contents: read
jobs:
  test:
    name: Pruebas (Python ${{ matrix.python-version }})
    runs-on: ubuntu-latest
    timeout-minutes: 15
    strategy:
      matrix:
        python-version:
          - "3.11"
          - "3.12"
          - "3.13"
      fail-fast: false
    steps:
      - name: Descargar el código (actions/checkout v7.0.1)
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
      - name: Instalar Python (actions/setup-python v7.1.0)
        uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0
        with:
          python-version: ${{ matrix.python-version }}
          cache: pip
      - name: Instalar dependencias
        run: python -m pip install -r requirements.txt
      - name: Ejecutar las pruebas
        run: python -m pytest -q

Es un punto de partida: puedes abrirlo en el editor, cambiar eventos, jobs y steps, y la aplicación lo vuelve a validar antes de generar el archivo.

Antes de usarla

  • Necesita un requirements.txt en la raíz del repositorio.
  • Ejecuta `python -m pytest`: añade pytest a tus dependencias.
  • Cambia las versiones de la matriz por las que soporte tu proyecto.

Qué hace cada parte

  • EventosEl workflow se ejecuta al subir cambios a main, en los pull requests hacia main y a mano desde la pestaña Actions (workflow_dispatch).
  • Matriz de versionesUna matriz con tres versiones de Python crea un job por versión; con fail-fast desactivado, un fallo en una no cancela las demás.
  • Caché de pipLa acción de instalar Python guarda la caché de pip entre ejecuciones para que las instalaciones sean más rápidas.
  • Permisos y seguridadPermisos mínimos: el token solo puede leer el contenido del repositorio (contents: read). Las acciones de terceros van fijadas a un SHA de commit concreto (con la versión legible en el nombre del step), no a una etiqueta móvil.
  • Tiempo máximoCada job tiene un tiempo máximo (timeout-minutes) para que un cuelgue no consuma minutos sin fin.

Cómo usarla en tu repositorio

  1. Guarda el archivo en la carpeta .github/workflows/ de tu repositorio.
  2. Súbelo (commit y push). GitHub detecta el workflow y lo ejecuta según sus eventos.
  3. Mira el resultado en la pestaña Actions del repositorio.

Preguntas frecuentes

¿Qué necesita mi repositorio para que funcione?

Un requirements.txt en la raíz y pytest entre tus dependencias. Si usas otro gestor (poetry, uv…), cambia el step de instalar dependencias.

¿Cómo cambio las versiones de Python?

Edita la lista de la matriz (python-version) por las versiones que soporte tu proyecto, ya sea en el YAML o en el editor.

¿Por qué las acciones llevan un SHA largo en vez de v4?

Una etiqueta como v4 puede moverse a otro código sin avisar; un SHA de commit no. Fijarlo reduce el riesgo de que una acción comprometida entre en tu pipeline.

Otras plantillas

  • Workflow de GitHub Actions para Node.js (lint, pruebas y build)Instala con npm ci y ejecuta lint, pruebas y build en varias versiones de Node con cache de npm.
  • Workflow de GitHub Actions para construir y publicar una imagen Docker en GHCRConstruye la imagen del repositorio y la publica en GitHub Container Registry (ghcr.io) al subir a main o crear una etiqueta v*.

Pruébalo gratis

El editor está disponible con una cuenta gratuita, con límites de uso. Nada se ejecuta en tu repositorio ni en tu instalación: tú decides qué archivo usas.

Crear cuenta gratisIniciar sesión