Saltar a contenido

Introducción a los Rulebooks

Los Rulebooks son el lenguaje de automatización basado en archivos de Clarive.

Cada aspecto funcional del sistema puede automatizarse con rulebooks, desde pipelines de CI/CD (usados para construir, probar y desplegar aplicaciones), hasta formularios, personalización de flujos de trabajo y dashboards.

Los Rulebooks son archivos que definen reglas. Las reglas son conjuntos de acciones que se activan en ciertos eventos del sistema. Los eventos del sistema incluyen cosas como build, deploy en pipelines de job, promoción y degradación de topics en un flujo de trabajo y otros. Así que ampliamos el concepto de un evento para incluir cualquier lugar en el que pueda enganchar código.

Dónde usar Rulebooks

Los Rulebooks pueden usarse en 2 lugares en Clarive:

  • .clarive.yml y otros archivos YAML basados en proyectos
  • en el REPL, para pruebas

Otro YAML más

Los rulebooks de Clarive están inspirados en los lenguajes informáticos usados para automatizar el trabajo de sistemas, desde Bash hasta Python. Pensamos que la automatización requiere un poco más que un simple lenguaje declarativo, por lo que los rulebooks pretenden ser un lenguaje imperativo completo de Turing basado en YAML, y no una estructura de datos rígida dispuesta en un lenguaje de marcado.

do:
   - foo = shell: git branch -a
   - echo: your branch is {{ foo.output }}

Sin embargo, somos conscientes de que crear otro lenguaje en un espacio de lenguajes informáticos ya diverso, tal vez incluso saturado, es un desafío. Es por eso que los rulebooks están destinados a ser código de pegamento para otros lenguajes.

Puede (y debe) escribir reglas minimalistas. Aunque las reglas pueden tener mucha lógica.

Características clave de Rulebook

  • bucles (for) y condicionales (if)
  • variables
  • enviar e importar archivos
  • leer/escribir archivos de configuración
  • ejecutar comandos de sistema locales y remotos

El Entorno

¿Dónde se ejecutan los rulebooks?

Clarive es un sistema centralizado. Todos los rulebooks se ejecutan desde el servidor central. Los Rulebooks no se envían a workers, agentes o nodos en general. Están destinados a ejecutarse desde el servidor central de Clarive (de hecho, desde donde está instalado el Dispatcher).

Dependiendo del evento que se active, el entorno será una de dos posibilidades:

  • un directorio de job de pipeline desechable, creado para cada job que ejecuta el sistema
  • un directorio de workspace estable

Todos los archivos necesarios para su .clarive.yml deben estar dentro de repositorios git administrados por Clarive.

Ops

Ops es una abreviatura de operations. "Ops" es como se llaman las instrucciones del lenguaje de reglas de Clarive. Aquí hay algunos ejemplos de ops de reglas:

Ops de lenguaje o control:

  • var - sección de asignación/declaración de variables
  • def - defina sus propios ops usando YAML
  • import - importa módulos como ops en su rulebook
  • import_vars - importa variables del alcance de llamada superior
  • if - condicional
  • for - bucle sobre contenido de variables.
  • try-catch - capturar errores

Ops de servicio:

  • ship - enviar un archivo a un servidor
  • fetch - traer un archivo de vuelta desde un servidor
  • parse - analizar una plantilla de configuración de cadena o archivo
  • dump - volcar una estructura de datos
  • print - imprimir cadena o estructura de datos
  • echo - imprimir cadena seguida de una nueva línea
  • email - enviar un correo electrónico a usuarios o direcciones
  • slack_post - publicar un mensaje en slack
  • y muchos, muchos más...

En realidad, la lista de ops instalados en su sistema puede variar según los plugins que pueda haber instalado. Consulte la referencia de la api del rulebook para la lista oficial de ops (que no incluye ops de plugins).

Para una referencia completa para su instalación de Clarive abra el documento de ayuda en su servidor en:

 https://yourclariveserver/r/help?path=/rulebook/rulebook-api

Características del lenguaje YAML

Los Rulebooks son YAML válido y perfectamente legal, o al menos según lo que comúnmente se establece como legal. El analizador YAML de Clarive no realiza ningún análisis especial, que está basado en LibYAML.

Variables y plantillas

Los Rulebooks pueden hacer uso de un sistema de reemplazo de variables y plantillas basado en ClaJS, un intérprete JavaScript muy rápido que viene incluido con Clarive.

  • ${myvar} - análisis simple de variables
  • {{ myvar }} - análisis de variables JavaScript

Las plantillas JavaScript con lo que se conoce como handlebars ({{ .. }}) son una herramienta muy poderosa para tratar con datos complejos.

Llamar a su lenguaje favorito

Uno de los aspectos más útiles de los rulebooks es que pueden convertir cualquier programa en un op.

Hola Mundo

Para probar el lenguaje de rulebook, diríjase al REPL.

do:
   - echo: hello world