Condiciona un deploy a un botón de chat, no a una pestaña de dashboard
Pausa el pipeline, publica botones de aprobar/rechazar en el canal que ya está mirando el release, y deja que el clic — no alguien vigilando una pestaña — reanude o cancele la ejecución.
La mayoría de los gates de deploy todavía significan que alguien vuelve a la pestaña del dashboard de CI cada pocos minutos para ver si hay una ejecución esperándolo. Dailybot mueve el gate al canal que ya está mirando el release: aprueba o rechaza desde un botón, y tu servidor de CI recoge el clic a través de un callback firmado — sin pestaña, sin polling.
Esta página cubre el gate en sí — botones de aprobar/rechazar conectados a callback_url con callback_auth, confirmados con una auto-respuesta response, y opcionalmente encadenados a un botón callback_workflow para lo que siga.
Constrúyelo paso a paso
Pausa el pipeline en el gate
Cuando el pipeline llega a un gate de deploy, haz que haga POST a /v1/send-message/ en lugar de esperar en un dashboard. Apunta al canal que ya está mirando el release — Slack, Microsoft Teams, Discord o Google Chat funcionan igual.
Agrega botones de aprobar/rechazar con un callback firmado
Agrega dos botones interactivos, cada uno con callback_url apuntando a tu servidor de CI y callback_auth para auth de transporte bearer, basic o custom-header. callback_auth solo es válido junto con callback_url — no tiene efecto en los otros cuatro tipos de callback.
Reanuda o cancela desde el clic
Aprobar publica su value ("approve", o el que hayas elegido) a callback_url; Rechazar publica el suyo. Tu servidor de CI verifica la solicitud firmada y reanuda o cancela la ejecución — el clic es la automatización, no un aviso sobre una.
Confírmalo en el canal
Agrega una auto-respuesta response a cada botón para que el canal vea la confirmación de inmediato — "Aprobado — desplegando ahora" o "Rechazado — deploy cancelado" — sin que nadie tenga que refrescar una página de pipeline.
Encadena un botón de workflow para la siguiente etapa
Combina un botón callback_workflow en el mismo mensaje — por ejemplo un botón "Redesplegar staging" que dispara un workflow api_trigger — para que la siguiente etapa también esté a un clic de distancia.
Míralo en acción
Un flujo de aprobación simulado — no se envía ningún mensaje real.
¿Desplegamos 4.12.0 a producción?
Lo que realmente hace el clic
Haz clic en un botón arriba para ver qué hace el callback firmado.
Recetas para copiar y pegar
curl -sS -X POST 'https://api.dailybot.com/v1/send-message/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"message":"¿Desplegamos 4.12.0 a producción?","target_channels":["C0123456789"],"buttons":[{"label":"Aprobar","button_type":"interactive","value":"approve","callback_url":"https://ci.example.com/hooks/deploy","callback_auth":{"type":"bearer","token":"$DEPLOY_CALLBACK_TOKEN"},"response":{"message":"Aprobado — desplegando ahora."}},{"label":"Rechazar","button_type":"interactive","value":"reject","callback_url":"https://ci.example.com/hooks/deploy","callback_auth":{"type":"bearer","token":"$DEPLOY_CALLBACK_TOKEN"},"response":{"message":"Rechazado — deploy cancelado."}}]}'
dailybot chat send -c C0123456789 -m "¿Desplegamos 4.12.0 a producción?" \
--approve-button "Aprobar=approved" \
--reject-button "Rechazar=rejected" \
--callback-url "https://ci.example.com/hooks/deploy" \
--callback-bearer "$DEPLOY_CALLBACK_TOKEN"
dailybot chat send -c C0123456789 -m "Aprobado. ¿Listo para redesplegar staging después?" \
--workflow-button "Redesplegar staging=$REDEPLOY_WORKFLOW_UUID"
Publica un mensaje de aprobación de deploy-gate a #deploys con botones
de aprobar/rechazar que hagan POST a https://ci.example.com/hooks/deploy,
autenticado con un token bearer de $DEPLOY_CALLBACK_TOKEN.
¿Listo para transformar cómo trabaja tu equipo?
Únete a miles de equipos que usan Dailybot para ahorrar tiempo, impulsar el engagement y tomar mejores decisiones.