What is biruda? --------------- Biruda tries to provide a C-only and lightweight automatic build framework based on messaging. The virtualization technology is not glued to the builder, it allows chroot, jails, docker, libvirt, etc. technology to form the builders. Burida is the successor of 'build' (birua - Japanese for builder), see http://github.com/Wolframe/build. Biruda consists of the following logical components: The master: * receives build commands, orchestrates the build The coordinator: * manages resources (virtual machines, CPUs per chroot, etc.) The worker: * does the job (this can be build, test, etc.) An embedded web server: * RESTful and JSON service for web interfaces and the CLI A commnd line interface (CLI), embedded in biruda itself: * communicates to the embedded web server in the master Requirements ------------ Biruda is written in plain C and uses libraries written in plain C. You need a C compiler (gcc, clang, tcc, MSVC) and GNU make (resp. NMAKE on Windows). Additionally you need the following third-party software: * gengetopt: for command argument line parsing (on Windows you need the Cygwin version of gengetopt) http://www.gnu.org/software/gengetopt/gengetopt.html * confuse: configuration library http://www.nongnu.org/confuse/ * nanomsg: for communication between nodes (on the same machine or on several machines) http://nanomsg.org/ * libmicrohttpd: for an embedded web interface (not on Windows, there is no master webserver on Windows currently) http://www.gnu.org/software/libmicrohttpd/ * pthreads: for threading support on Windows http://sourceware.org/pthreads-win32/ * json-c: JSON for message payload https://github.com/json-c/json-c/wiki * glib2: for direct execution of children in the worker http://www.gtk.org/ * libdaemon: for daemonizing support on Unix The following software is integrated in the biruda source tarball, mainly because of lack on some systems or local modifications: * linenoise: lightweight editline/readline replacement for the biruda command line interface (cli) https://github.com/antirez/linenoise * http-tiny: simple web client library, used by the 'cli' to talk to the master. http://www.demailly.com/~dl/http-tiny-1.2.tar.gz * xxd: for integrating a configuration template into the biruda binary itself (for the '--generate-config' option), also used for embedding HTML/CSS/JS for the webfronted into the binary Other projects -------------- * buildbot (http://buildbot.net/) * OpenSuseBuild service (http://openbuildservice.org/)