Exploración de eventos

Completado

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-DEC y 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_dispatch durante 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.