Ir al contenido

Configurar disparadores de pipeline

Un disparador es lo que inicia un pipeline. Cada uno es un nodo del lienzo que se arrastra desde la sección Disparadores de la biblioteca de nodos. Al seleccionar ese nodo se abre su inspector a la derecha: no hay una lista de disparadores siempre visible, ni una pestaña de disparadores, ni una pantalla de disparadores.

  1. Ve a Ajustes → Espacio de trabajo → Plantillas de pipeline.
  2. Pulsa el lápiz de la fila de la plantilla para abrir el editor.
  3. Selecciona un nodo de disparador en el lienzo. Aparece el panel derecho con los ajustes de ese disparador. Si no hay nada seleccionado, el panel permanece oculto.

La sección Disparadores de la biblioteca de nodos muestra cada tipo de inicio como su propio nodo: manual, programación, webhook y una tarjeta por cada evento de dominio. Busca merged, ticket o el nombre del tipo (PrMerged) y arrastra la tarjeta al lienzo. Una plantilla nueva también muestra una tarjeta fantasma Añadir un disparador en el ancla de entrada; elige en la misma lista que se puede buscar.

El disparador se inserta de inmediato. Los disparadores automáticos nuevos empiezan desactivados, para que soltar uno no lance una ejecución antes de que lo hayas configurado. Usa el interruptor Activado del inspector para activarlo, o el icono de la papelera para eliminarlo.

Arrastra Ejecución manual (o elígela en la tarjeta fantasma) y activa Activado en su inspector. Eso es lo que hace que la plantilla aparezca en el lanzador de ejecuciones. No es un caso especial: el interruptor escribe una fila de disparador normal cuyo tipo de evento es manual. Se guarda de inmediato; no hay nada que guardar.

El mismo interruptor está detrás de Ejecución manual en la cabecera del editor, donde se sitúa junto a las entradas declaradas de la plantilla.

Estos eventos inician una ejecución:

Etiqueta del selector Evento
PR externa abierta ExternalPrDetected
PR publicada PullRequestPublished
Estado de la PR cambiado PullRequestStatusChanged
PR fusionada PrMerged
Mensaje recibido MessageReceived
Ticket creado TicketCreated
Estado del ticket cambiado TicketStatusChanged
Ticket asignado TicketAssigned
Tarea completada TicketCompleted
Tarea fallida TicketFailed
Tarea cancelada TicketCancelled
Umbral de presupuesto superado BudgetThresholdCrossed
Repositorio añadido RepoAdded
Grabación de la reunión detenida MeetingRecordingStopped
Habilidad actualizada SkillUpdated
Espacio eliminado SpaceDeleted

SpaceDeleted es el evento que escucha el pipeline integrado de limpieza de worktrees: lleva el id del espacio eliminado, así que la ejecución recupera exactamente los worktrees de ese espacio en lugar de recorrer todo el espacio de trabajo.

Para conocer las claves de carga útil que lleva cada evento, consulta la referencia de eventos de dominio.

Selecciona el nodo Estado de la PR cambiado. Los chips de estado del inspector son el único filtro que la interfaz puede crear. Pulsa cualquiera de merged, closed, approved, opened, reopened; el disparador solo se activa cuando el status del evento coincide con uno de ellos. Si dejas todos los chips sin seleccionar, no hay filtro.

No hay ningún campo de filtro JSON de formato libre. Una clave de filtro que la carga útil del evento no lleve nunca coincide, así que no la escribas a mano contra una clave que no hayas confirmado en la referencia de eventos de dominio.

Selecciona el nodo Programación para editar cuándo se activa. Los campos del inspector se guardan tal como los dejas:

Campo Descripción
Programación (cron o every:segundos) Una expresión cron de cinco campos como 0 9 * * 1, o un intervalo como every:86400. Un número sin más se convierte a every:<n>.
Zona horaria (opcional) Una zona IANA como Europe/Paris. Por defecto, UTC.
Si se pierden ejecuciones Qué hacer con las activaciones perdidas mientras el servidor estaba caído: Ejecutar una vez agrupa todas las franjas perdidas en una sola activación al reiniciar (opción por defecto), Omitir reanuda en la siguiente franja futura.

La línea de resumen de la tarjeta del lienzo solo detalla el intervalo para la forma every:<seconds>; una expresión cron se muestra solo como «Programación».

Al arrastrar Webhook se acuña un token aleatorio. Selecciona el nodo para copiar la ruta POST /webhooks/<token> desde el inspector.

El token es también el secreto HMAC: la solicitud debe incluir X-Hub-Signature-256: sha256=<hex>, donde el hex es HMAC-SHA256(body, token). Una entrega que no supera la verificación se rechaza y se registra, y no se puede volver a enviar. Los duplicados se ignoran por su clave de deduplicación.

Cada inicio es su propio nodo del grafo. Si tiras un cable desde Programación, solo conectas Programación; Ejecución manual puede seguir una ruta distinta (por ejemplo, un nodo de condición) antes de unirse al mismo trabajo. Una ejecución entra por el inicio que coincide con su tipo de evento y se salta los subgrafos que pertenecen a los demás inicios.

Un disparador activado cuyo tipo de evento y filtro coinciden inicia una ejecución con la carga útil del evento como carga útil de disparador de la ejecución: eso es contra lo que se resuelve {{key}} en el prompt o el script de un paso. Los eventos que llevan una clave natural se deduplican, así que el mismo evento activado dos veces no inicia dos ejecuciones.

Una plantilla desactivada se rechaza aunque su disparador coincida. Ocho de las trece plantillas integradas vienen desactivadas, así que sus disparadores sembrados no activan nada hasta que actives la plantilla.

  • Condicionar solo la ruta manual — pasa Ejecución manual por un nodo de condición y lleva Programación directamente al trabajo. Cada inicio tiene sus propios cables.
  • Revisar cada PR nueva — evento PR publicada en la plantilla pr_review.
  • Limpiar después de una fusión — evento Estado de la PR cambiado, filtrado a merged / closed / approved. La plantilla integrada pr_merged_cleanup ya escucha así, además de ticket completado/cancelado, SpaceDeleted y una programación diaria que se fuerza a activarse en cada resiembra porque es recolección de basura.
  • Barrido nocturno — programación 0 2 * * * con una zona horaria, en una plantilla cuyo primer nodo es un script de bash.
  • Reaccionar a un sistema externo — un disparador de webhook, con el sistema que llama firmando el cuerpo de su solicitud como se ha descrito antes.