Cross-platform C SDK logo
EspañolEnglish
Cross-platform C SDK

NBuild

Next ❯

nbuild is a continuous integration system oriented to C/C++ projects based on CMake. Unlike other solutions, this is not a general purpose one. nbuild focuses on compiling and testing C/C++ projects through a heterogeneous computer network, nothing more. We can see it as a macro-compiler or a compiler orchestrator. It is used daily in the development of NAppGUI-SDK, whose reports are available through the BUILDS tab on the project website. It runs as a command line tool:

nbuild -n network.json -w workflow.json

#1. Motivation and features

The first lines of nbuild were written in 2015, during the development of NAppGUI-SDK, as a small utility to launch remote compilation commands via ssh. Over time it has evolved taking on features typical of conventional CI/CD systems. There are several reasons why NAppGUI did not adopt any of these CI/CD but they can be summarized as: Complexity of deployment, avoidance of scripting, avoidance of the cloud and guaranteed lifetime operation on legacy platforms. All this together with the ease and power provided by the C+SSH tandem to implement any current or future need, has been enough motivation to keep improving this tool over the years. The main features of nbuild can be summarized as:

  • Written in ANSI-C90, using the NAppGUI-SDK itself.
  • Compilation, testing and packaging of C/C++ projects based on CMake.
  • Oriented to Open-Source projects, where the source code is distributed.
  • Minimal configuration in the nodes (runners) where it is only necessary to install SSH, CMake and the compilers.
  • No cloud support or Internet connection required. Works on a local area network.
  • It runs a fixed function pipeline, so there is no need to program scripts. Just indicate, inside workflow.json, which code we want to compile and for which platforms.
  • There are no control panels. It runs as a command line tool.
  • Every project can define its own build network.
  • Works with legacy nodes such as Ubuntu12, WindowsXP or MacOSX Snow Leopard.
  • A relatively large workflow can be divided into several stages of different priority, obtaining partial results as quickly as possible.
  • Multithreading. Control different nodes in parallel.
  • Scheduler. Matches jobs with available nodes.
  • Non-blocking. The nbuild execution never interfere with or block new changes to the repository.
  • nboot. Ability to turn on/off machines on demand, at the moment they are needed.
  • ndoc. Generation of documentation associated with the project (HTML5/LaTeX/PDF).
  • nreport. Generates web reports with the result of each compilation.

#2. License

nbuild is an Open Source project and is published under the MIT license. The source code is available at GitHub.

Next ❯