Saltar al contenido principal

Cuando la tarea necesita un workflow propio

La ejecución estándar de Kadu corre la skill en un runner con Node, jq y Python. Una tarea que depende de una herramienta que el runner no trae, de una IP de salida conocida o de un runner propio necesita un workflow de GitHub Actions en el propio repositorio.

El caso de Kobana es el workspace security: el security-scan.yml instala la suite de pentest, programa el scan semanal y el mensual y corre en un runner con IP de salida fija. El modelo para copiar es el wh-run-skill.yml del mismo repositorio: checkout del Playbook, instalación de Claude Code, un stub de los helpers en /tmp/agent_state.sh, claude -p "/<plugin>:<skill>" --plugin-dir y set +e alrededor del pipeline.

Dos caminos de ejecución​

La tarea pasa a tener dos caminos, y lo que cambia entre ellos no aparece en ningún lugar si no se escribe:

Lanzamiento por KaduWorkflow propio
Runnerel de Kadu, sin las herramientasel del workflow, con las herramientas instaladas
Variablessolo lo que está en required_secretssolo lo que el bloque env: del paso mapea desde secrets.*/vars.*
Instrumentaciónla consola de verdadel stub, que solo hace eco en el log del run
Archivos de salida$OUTPUT_FILES_DIR, publicado por Kaduupload-artifact del propio workflow

Dos consecuencias:

  • Toda variable de configuración entra en los dos lugares: en required_secrets, para Kadu, y en el env: del workflow, para la agenda. Olvidar un lado hace que la configuración valga en un camino y caiga al valor predeterminado en el otro.
  • Una herramienta ausente se convierte en pendiente, y no en error. El lanzamiento desde la consola llega sin las herramientas: la skill registra lo que faltó y sigue. Quien necesita la ejecución completa es el workflow.

Un workflow que genera tráfico nace cerrado​

Un workflow que genera tráfico contra terceros o contra producción nace fail-closed: sin la variable de autorización (vars.SECURITY_SCAN_AUTORIZADO=true, en el caso de Kobana), el job termina en verde con un ::notice y no hace nada. Un cron en rojo cada semana por falta de configuración se convierte en ruido que nadie lee.