Flujos de trabajo Pro
Los flujos de trabajo permiten encadenar varias plantillas de tareas en un grafo dirigido (DAG) con ramificaciones, aprobaciones y pausas temporizadas. Una ejecución de flujo de trabajo avanza automáticamente a medida que termina cada paso: el grafo se diseña una sola vez en el editor visual y después se lanzan ejecuciones desde la página Flujos de trabajo.
Los flujos de trabajo son una funcionalidad de Semaphore Pro. El elemento de menú Flujos de trabajo aparece solo cuando su suscripción los incluye.
Descripción general
Un flujo de trabajo consta de:
- Nodos: pasos del grafo (ejecutar una plantilla, esperar una aprobación, hacer una pausa de un retardo o anotar con una nota).
- Aristas: conexiones entre nodos, cada una etiquetada con una condición que controla cuándo se inicia el nodo descendente.
Al iniciar un flujo de trabajo, Semaphore crea una ejecución de flujo de trabajo. El servidor dirige la progresión: a medida que las tareas terminan, las aprobaciones se resuelven o los retardos expiran, los nodos descendentes se lanzan según las condiciones de las aristas.
Crear un flujo de trabajo
- Abra su proyecto y vaya a Flujos de trabajo.
- Haga clic en Nuevo flujo de trabajo.
- En el editor gráfico:
- Arrastre nodos desde la paleta al lienzo.
- Conecte nodos arrastrando desde el conector de salida de un nodo hasta otro.
- Haga clic en un nodo o arista para editar sus propiedades en el panel lateral.
- Defina un nombre (y opcionalmente una versión inicial para el versionado de ejecuciones).
- Corrija los problemas listados en el panel Problemas y luego haga clic en Guardar.

El editor valida el grafo antes de guardar. Un flujo de trabajo válido debe tener al menos un nodo, exactamente un nodo inicial (sin aristas entrantes), ningún ciclo y una configuración completa en cada nodo ejecutable.
Tipos de nodos
| Tipo | Propósito |
|---|---|
| Tarea | Ejecuta una plantilla de tarea. Puede sobrescribir los parámetros de la plantilla (inventory, entorno, limit de Ansible, argumentos CLI adicionales) por nodo mediante los parámetros de tarea. |
| Aprobación | Pausa la ejecución hasta que un usuario con permiso la aprueba o la rechaza. Opcionalmente, defina un tiempo de espera (segundos) y un mensaje de aprobación. |
| Retardo | Espera el número de segundos configurado antes de continuar con los nodos descendentes. Útil para periodos de enfriamiento, ventanas de mantenimiento o para espaciar pasos dependientes. |
| Nota | Anotación de formato libre en el lienzo. Los nodos de nota no se ejecutan ni se conectan mediante aristas: sirven únicamente como documentación. |
Convergencia
Los nodos con varias aristas entrantes pueden requerir que terminen todos los nodos ascendentes (predeterminado) o cualquiera de ellos. Defina Convergencia en el panel de propiedades del nodo.
Nodos de retardo
Un nodo de retardo pausa la ejecución del flujo de trabajo durante la duración configurada (mínimo 1 segundo). Mientras espera:
- La ejecución permanece en estado running.
- La vista de la ejecución muestra una cuenta atrás en directo en el nodo de retardo.
- Los nodos descendentes conectados mediante aristas no se inician hasta que el retardo termina.
Si la ejecución del flujo de trabajo se detiene mientras un retardo está activo, el retardo se cancela y la ejecución finaliza en estado stopped.
Nodos de aprobación
Cuando la ejecución llega a un nodo de aprobación, el estado cambia a approval hasta que alguien la aprueba o la rechaza. Los controles Aprobar/Rechazar aparecen en la vista de la ejecución. Las aprobaciones rechazadas hacen fallar la ejecución según las condiciones de las aristas conectadas.
Condiciones de las aristas
Cada arista tiene una condición que determina cuándo el nodo descendente pasa a estar listo:
| Condición | El nodo descendente se inicia cuando el nodo ascendente… |
|---|---|
| On success | Termina correctamente (predeterminado). |
| On failure | Termina con un error. |
| Always | Termina en cualquier estado final (éxito o fallo). |
Use ramas On failure para acciones de compensación o notificaciones. Use Always cuando el siguiente paso deba ejecutarse independientemente del resultado.