Reglas Webhook
Las reglas webhook son una herramienta poderosa para habilitar el acceso desde el mundo exterior a su cadena de herramientas DevOps. Con reglas webhook se pueden escribir interfaces de aplicación ad-hoc a Clarive, así como páginas web personalizadas.
Las reglas webhook se pueden acceder a través de una URL expuesta en Clarive. Cuando un usuario o programa llama a la URL, la lógica de la regla se ejecutará como con cualquier otro evento.
Para habilitar una regla webhook, simplemente suba un rulebook .clarive.yml a un repositorio Git
con un evento que comience con una barra diagonal /.
name: my webhooks /hello_world: - echo: "requested param={{ ctx.request('params') }}"
Si el rulebook anterior está en MyProject/MyRepo bajo Clarive, la siguiente
URL se expondrá instantáneamente (el usuario necesita estar autenticado, es decir, desde un navegador):
https://myclariveserver/rules/json/MyProject/MyRepo/hello_world
Llamar a la URL (con cURL por ejemplo) ejecutará la operación echo en el
webhook de evento /hello_world.
Datos de Solicitud¶
Para obtener los datos de solicitud, los siguientes contextos están habilitados:
| Contexto | Contenidos |
|---|---|
| ctx.request('params') | Los parámetros de query-string o formulario de la URL en un hash |
| ctx.request('args') | Array con cada uno de los componentes /path de la URL |
| ctx.request('body') | El cuerpo completo de la solicitud como una cadena |
| ctx.request('headers') | Encabezados de solicitud HTTP |
| ctx.request('upload') | Archivos subidos |
| ctx.user() | El id de usuario quien hizo la solicitud (autenticada) |
Datos de respuesta¶
Cualquier dato de respuesta debe ser enviado usando la operación web_response:.
name: my webhooks /hello_world: do: - web_response: body: "Hello world!"
Parámetros válidos de web_response:
for my $meth ( qw(body cookies status redirect location write content_type headers header) ) {
| Argumento | Contenidos |
|---|---|
| body | El cuerpo de la respuesta |
| cookies | Un hash con las cookies a establecer en el navegador/cliente |
| status | El estado HTTP |
| redirect | Redirección HTTP |
| location | Cadena de ubicación HTTP |
| content_type | Cadena de content-type |
| headers | Encabezados de respuesta |
Autenticación¶
Las llamadas a rulebooks webhook necesitan estar autenticadas por defecto.
Eso significa que el usuario que llama al rulebook necesita estar autenticado o poner un api_key como argumento a la llamada del rulebook.
Los permisos del rulebook estarán vinculados al usuario que llama al rulebook, y nunca al propietario que creó la regla.
Para usar una clave api, diríjase al menú de usuario, Preferencias en la parte superior derecha de la IU de Clarive, y Genere Clave API (si nunca se ha hecho antes).
Copie el api_key y úselo en el cliente que llamará al rulebook:
curl https://clariveserver/rule/json/MyProject/MyRepo/hello_world?api_key=9837492dac873473443489adcc8787