summaryrefslogtreecommitdiff
path: root/README
blob: 2824f2858168f77a9b5e6e7b51b787c1c487cc4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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/)