SDK Multiplataforma en C logo

SDK Multiplataforma en C

NBuild

Siguiente ❯

nbuild es un sistema de integración continua orientado a proyectos C/C++ basados en CMake. A diferencia de otras soluciones, esta no es de propósito general. nbuild se enfoca en compilar y probar proyectos C/C++ a través de una red heterogénea de máquinas, nada más. Podemos verlo como un macro-compilador o un orquestador de compiladores. Se utiliza diariamente en el desarrollo de NAppGUI-SDK, cuyos informes están disponibles a través de la pestaña BUILDS en la web del proyecto. Corre como una utilidad por línea de comandos:

 
nbuild -n network.json -w workflow.json

1. Motivación y características

Las primeras líneas de nbuild se escribieron en el año 2015, durante el desarrollo de NAppGUI-SDK, como una pequeña utilidad para lanzar comandos de compilación remotos mediante ssh. Con el tiempo ha ido evolucionando tomando características propias de sistemas CI/CD convencionales. Hay diversos motivos por lo que NAppGUI no adoptó ninguna de estas CI/CD pero pueden resumirse en: Complejidad del despliegue, evitar scripting, evitar el cloud y garantizar el funcionamiento de por vida en plataformas legacy. Todo esto unido a la facilidad y potencia que brinda el tandem C+SSH para implementar cualquier necesidad actual o futura, ha sido suficiente motivación para ir mejorando esta herramienta a lo largo de los años. Las principales características de nbuild pueden resumirse en:

  • Escrito en ANSI-C90, utilizando el propio NAppGUI-SDK.
  • Compilación, prueba y empaquetado de proyectos en C/C++ basados en CMake.
  • Orientado a proyectos Open-Source, donde se distribuye el código fuente.
  • Mínima configuración en los nodos (runners) donde únicamente es necesario instalar SSH, CMake y los compiladores.
  • No requiere soporte cloud ni conexión a Internet. Funciona en una red de área local.
  • Ejecuta un flujo fijo, por lo no hay que programar scripts. Tan solo indicar, dentro de workflow.json, que código queremos compilar y para que plataformas.
  • No hay paneles de control. Corre como una utilidad por línea de comandos.
  • Cada proyecto puede definir su propia red de nodos.
  • Funciona con nodos "legacy" como Ubuntu12, WindowsXP o MacOSX Snow Leopard.
  • Un flujo de trabajo relativamente grande puede dividirse en varias etapas de diferente prioridad, obteniendo resultados parciales lo antes posible.
  • Multihilo. Controla diferentes nodos en paralelo.
  • Scheduler. Empareja trabajos con los nodos disponibles.
  • No bloqueante. En ningún momento la ejecución de nbuild interfiere o bloquea nuevos cambios en el repositorio.
  • nboot. Capacidad de encender/apagar máquinas bajo demanda, en el momento que se necesiten.
  • ndoc. Generación de documentación asociada al proyecto (HTML5/LaTeX/PDF).
  • nreport. Genera reportes web con el resultado de cada compilación.

2. Licencia

nbuild es un proyecto Open Source y se publica bajo licencia MIT. El código fuente está disponible en GitHub.

Siguiente ❯