Introducción a la nueva funcionalidad de Workflow Dispatch API
GitHub Actions es una herramienta clave para la automatización de flujos de trabajo en entornos DevOps. Hasta hace poco, la API de Workflow Dispatch permitía disparar workflows de forma programática, pero carecía de una funcionalidad crítica: devolver información directa sobre el workflow recién iniciado, como el ID de ejecución (Run ID). Ahora, con esta actualización, la API incluye esta capacidad, facilitando la trazabilidad y gestión de workflows en tiempo real.
Este artículo explora cómo aprovechar esta nueva funcionalidad, con ejemplos prácticos y casos de uso relevantes para profesionales cloud que integran GitHub Actions en arquitecturas basadas en Azure.
¿Qué es el Run ID y por qué es importante?
El Run ID es un identificador único que GitHub asigna a cada ejecución de un workflow. Este identificador permite:
- Auditar ejecuciones: Identificar y rastrear workflows específicos en el historial de GitHub Actions.
- Automatizar procesos dependientes: Usar el Run ID para vincular workflows con sistemas externos o pipelines adicionales.
- Mejorar la depuración: Facilitar el acceso directo a logs y resultados de ejecución.
Antes de esta actualización, los desarrolladores debían recurrir a métodos indirectos para obtener información sobre el workflow iniciado, como consultar el historial de ejecuciones. Ahora, el Run ID se devuelve directamente en la respuesta de la API.
Cómo utilizar la nueva funcionalidad
Endpoint actualizado: POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches
El endpoint de Workflow Dispatch API permite iniciar un workflow en un repositorio específico. Con la nueva funcionalidad, la respuesta incluye el Run ID del workflow iniciado.
Ejemplo básico: Disparar un workflow y obtener el Run ID
El siguiente ejemplo muestra cómo disparar un workflow usando la API y capturar el Run ID en la respuesta.
Código en Python
import requests
# Parámetros de configuración
GITHUB_TOKEN = "tu_token_personal" # Reemplazar con tu token de acceso
REPO_OWNER = "mi-organizacion"
REPO_NAME = "mi-repositorio"
WORKFLOW_ID = "deploy.yml" # Nombre o ID del workflow
API_URL = f"https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/actions/workflows/{WORKFLOW_ID}/dispatches"
# Datos del payload
payload = {
"ref": "main", # Rama donde se ejecutará el workflow
"inputs": {
"param1": "valor1", # Parámetros opcionales definidos en el workflow
}
}
# Headers para la autenticación
headers = {
"Authorization": f"Bearer {GITHUB_TOKEN}",
"Accept": "application/vnd.github+json"
}
# Realizar la solicitud POST
response = requests.post(API_URL, json=payload, headers=headers)
if response.status_code == 204:
print("Workflow disparado exitosamente.")
# Obtener el Run ID de la respuesta (nuevo comportamiento)
run_id = response.headers.get("X-GitHub-Run-ID")
if run_id:
print(f"Run ID: {run_id}")
else:
print("Run ID no disponible en la respuesta.")
else:
print(f"Error al disparar el workflow: {response.status_code}")
print(response.json())
Note: El token personal debe tener permisos de
repoyworkflowpara interactuar con este endpoint.
Respuesta esperada de la API
Cuando el workflow se dispara correctamente, la API devuelve un código de estado 204 No Content. Sin embargo, ahora se incluye el Run ID en los headers de respuesta bajo la clave X-GitHub-Run-ID.
Ejemplo de headers de respuesta
HTTP/1.1 204 No Content
X-GitHub-Run-ID: 123456789
Warning: Si el Run ID no aparece en la respuesta, verifica que el workflow esté configurado correctamente y que el token tenga los permisos necesarios.
Casos de uso en arquitecturas Azure
1. Integración con Azure DevOps
El Run ID puede ser utilizado para vincular workflows de GitHub Actions con pipelines en Azure DevOps. Por ejemplo, tras disparar un workflow desde GitHub, puedes usar el Run ID como referencia en una tarea de Azure DevOps para monitorizar su progreso.
Ejemplo: Crear un pipeline dependiente
trigger:
branches:
include:
- main
variables:
GITHUB_RUN_ID: $(RunID)
steps:
- task: Bash@3
inputs:
script: |
echo "Iniciando monitoreo del workflow con Run ID: $GITHUB_RUN_ID"
Note: Este enfoque requiere que el Run ID sea pasado como variable entre sistemas.
2. Automatización de despliegues en Azure
En escenarios de despliegue continuo (CD), el Run ID puede ser utilizado para vincular ejecuciones de workflows con despliegues en Azure App Service o Azure Kubernetes Service (AKS). Por ejemplo, puedes usar el Run ID para crear etiquetas en imágenes de contenedores o recursos desplegados.
Limitaciones y consideraciones
Aunque la funcionalidad del Run ID es un gran avance, existen algunas limitaciones:
- Compatibilidad con herramientas externas: No todas las herramientas están preparadas para consumir el Run ID directamente. Es posible que necesites adaptar tus scripts o integraciones.
- Configuración del workflow: Asegúrate de que el workflow esté correctamente configurado para aceptar inputs y dispararse desde la API.
Conclusión
La capacidad de obtener el Run ID directamente desde la API de Workflow Dispatch es un cambio significativo para los usuarios de GitHub Actions. Esta funcionalidad mejora la trazabilidad, la integración con sistemas externos y la automatización de procesos en arquitecturas modernas, incluidas aquellas basadas en Azure.
Si aún no has explorado esta nueva funcionalidad, ahora es el momento de integrarla en tus flujos de trabajo para optimizar tus operaciones DevOps.
```