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
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
- Guarda el archivo en la carpeta .github/workflows/ de tu repositorio.
- Súbelo (commit y push). GitHub detecta el workflow y lo ejecuta según sus eventos.
- 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.