¿Que es Cake Build?

En este post te voy a explicar que es Cake y para qué puedes usarlo.

Cake, CakeBuild o C# Make es una herramienta libre, de código abierto y multiplataforma para automatización de tareas, en especial compilaciones y despliegues. Esta incluye lenguaje específico de dominio (DSL) para escribir las tareas.

Con Cake escribes scripts en C# para automatizar tareas, compilaciones, testing, manejo de archivos, tareas de proposito de general, comunicación con equipos remotos, ejecución de web services; bueno, lo que sea que puedas hacer con .Net/.NetCore puedes hacerlo con Cake, ya que este corre sobre la plataforma de Microsoft. Puedes importar Namespaces de .Net o ensamblados compatibles con .Net.

¿Cuáles son las ventajas de Cake?

  • Si eres programador .Net, Cake te otorga una mejor ventaja automatizar. Puedes realizar tus scripts en C#. No tienes que aprender la sintaxis ni los módulos de otro lenguaje de scripting como Powershell. En el caso de que necesites más poder, puedes ejecutar herramientas externas como Bash u otra CLI, la herramienta te ofrece opciones para hacerlo.
  • La instalación de Cake es rápida, solo necesitas ejecutar un comando; con este, tendrás todo tu entorno listo para empezar a escribir tus scripts.
  • No necesitas crear clases o inicializar proyectos para empezar a construir scripts. Esto puede representar una ventaja para ti, si necesitas automatizar algo rápido.
  • Cake puede extenderse con módulos, tools y addins. Puedes usarlo para automatizar tareas con otros lenguajes o plataformas como Kotlin, Node.js o TypeScript, por mencionar algunos.
  • Cake es compatible con varios sistemas de integración continua. Puedes emplear esta integración para leer argumentos o estados de tu servidor CI o para enviarle instrucciones. No necesitas escribir código adicional.

¿Cuáles son las desventajas de Cake?

Como todas las herramientas, Cake viene con una serie de pros, pero también de contras, a continuación te las menciono:

  • Cake es una maravillosa experiencia para un programador .Net. Si vienes de otro lenguaje fuera del ecosistema DotNet, vas a tener una curva de aprendizaje más pronunciada.
  • Existen integraciones con Visual Studio, Visual Studio Code y Rider para codificar y hacer debug. No son las mejores, ni están a la misma altura que el trabajo con proyectos normales. No hay Intellisense, ni tampoco debug directo.
  • Cake no soporta inyección de dependencias de manera nativa. Al menos no para componentes personalizados. Tus Tasks van a requerir instanciación directa de componentes o un mecanismo de inyección de dependencias propio. Esto también afecta el testing.
  • Las Tasks de Cake no son testeables del todo. Este es un problema para el aseguramiento de la calidad en todos tus sistemas.
  • No hay fronteras claras a la hora de implementar funcionalidades personalizadas. Es difícil distinguir cuando necesitas un módulo, un addin o una tool.

¿Qué es CakeFrosting?

Si ya has entrado al sitio, puede que te hayas encontrado con menciones a CakeFrosting (CF). Cuando lees la documentación, tanto Cake como CF lucen muy similares. Tienen funcionalidades parecidas, y fines comunes. La diferencia entre Cake y CF radica en cómo se empaca el código. Mientras que en Cake usas scripts, en CF usas ensamblados.  Las Tasks son clases compiladas en un ensamblado mediante el cual puedes ejecutar una aplicación de línea de comandos.

CakeFrosting busca resolver la carencia que tiene Cake en cuanto a hacer testing y manejar inyección de dependencias y asegurar calidad. Al ser un ensamblado, en lugar de un script puedes crear proyectos de pruebas y aplicar toda la lógica que consideres necesaria. Obvio, al convertir el script en Assembly pierdes la ventaja de poder editar el código rápidamente.

Conclusiones.

Cake es una poderosa herramienta para automatizar tareas. La curva de aprendizaje es reducida. Si necesitas automatizar sin tener que aprender otro lenguaje, esta puede ser tu opción.

 

 

Gustavo Sánchez