Exploración de eventos
Los flujos de trabajo de Acciones de GitHub se desencadenan mediante eventos : actividades específicas que se producen en el repositorio o según una programación. Los eventos se definen mediante la cláusula en la on definición de flujo de trabajo y determinan cuándo se ejecuta la automatización.
Eventos programados
Programe flujos de trabajo para que se ejecuten en momentos específicos mediante la sintaxis cron. Esto es perfecto para tareas de mantenimiento, informes regulares o compilaciones nocturnas.
on:
schedule:
# Runs every weekday at 8 AM UTC
- cron: "0 8 * * 1-5"
# Runs every Sunday at midnight UTC
- cron: "0 0 * * 0"
Desglose de la sintaxis cron:
- Minuto (0-59) | Hora (0-23) | Día (1-31) | Mes (1-12) | Día de la semana (0-6, domingo=0)
- Use nombres de mes:
JAN-DECy nombres de día:SUN-SAT - Utilice
*para "any" (citar las cadenas cron en YAML)
Ejemplos:
-
'0 9-17 * * 1-5'- Cada hora de 9:00 a 17:00, lunes a viernes -
'30 2 * * *'- Diariamente a las 2:30 a. m. -
'0 0 1 * *'- Primer día de cada mes a medianoche
Eventos del repositorio de código
Los desencadenadores más comunes responden a los cambios de código en el repositorio:
Eventos básicos de solicitud de inserción y extracción
on:
# Single event
push
# Multiple events
pull_request
# Or as a list
on: [push, pull_request]
Eventos filtrados que contienen ramas y rutas
on:
push:
branches: [main, develop]
paths: ["src/**", "!docs/**"]
pull_request:
branches: [main]
types: [opened, synchronize, reopened]
Eventos comunes del repositorio
| Event | Trigger | Caso de uso |
|---|---|---|
push |
Código insertado en la rama | CI/CD, pruebas automatizadas |
pull_request |
Pr abierta/actualizada | Automatización de revisión de código |
release |
Versión publicada | Implementar para producción |
create |
Rama o etiqueta creada | Inicializar entornos |
delete |
Rama o etiqueta eliminada | Limpieza de recursos |
Eventos manuales
Desencadenar flujos de trabajo manualmente desde la pestaña Acciones de GitHub mediante workflow_dispatch:
on:
workflow_dispatch:
inputs:
environment:
description: "Deployment environment"
required: true
default: "staging"
type: choice
options:
- staging
- production
version:
description: "Version to deploy"
required: true
type: string
Nota:
El archivo de flujo de trabajo debe existir en la rama predeterminada para que aparezca en la interfaz de usuario del desencadenador manual.
Eventos de webhook
GitHub proporciona muchos eventos de webhook para las actividades del repositorio:
on:
# Wiki page created or updated
gollum
# Issues opened, closed, or edited
issues:
types: [opened, edited, closed]
# New release published
release:
types: [published]
Eventos externos
Use repository_dispatch para desencadenar flujos de trabajo desde sistemas externos a través de la API REST de GitHub:
on:
repository_dispatch:
types: [deploy-staging, run-tests]
Desencadenamiento externo:
curl -X POST \
-H "Authorization: token YOUR_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/OWNER/REPO/dispatches \
-d '{"event_type":"deploy-staging","client_payload":{"environment":"staging"}}'
Procedimientos recomendados para eventos
- Sea específico: Use filtros de rama y ruta para evitar ejecuciones innecesarias.
- Combinar eventos relacionados: Agrupación de desencadenadores similares en un flujo de trabajo
- Usar los tipos de eventos adecuados: elija el tipo de evento más específico para sus necesidades.
-
Probar manualmente primero: usar
workflow_dispatchdurante el desarrollo - Supervisión del uso: revisión de las ejecuciones de flujo de trabajo para optimizar la configuración de eventos
Para obtener documentación completa sobre eventos, consulte Eventos que desencadenan flujos de trabajo.