Project:Build Service

The Gentoo Build Service project will have as aim to provide a software and relative ebuilds that would offer a way to deploy privately a build service:

A web interface that exposes API to control remote workers (a cluster of builder nodes) that can build packages as a set of repo with specifications that indicates the packages, the steps, and the desired customizations (useflags, keywords, local ebuilds override, ecc..). Workers will build packages on top of a container or a VM - with support (at least) for Docker.

In such way, the webui can be hooked also to Github repositories, and build-test against Pull requests or changes of an overlay, and even the Gentoo tree, with the option to publish the generated artefacts thru the web server.

The project is still in early stage, so consider this page under construction yet.

Project status
Code is still experimental and in alpha state, and it's not suitable for deployment, usage is strongly discouraged unless for development purposes. Documentation is also missing.

If you are experimenting it - do it locally or do not expose the service outside your network. It is composed already of a server (master), a CLI and an agent executable for bringing up nodes to the cluster. Configurations can also be managed with etcd.

A (skeleton) web interface is available to display tasks overview and starting new builds, it's also possible to see the build live from the webui. It currently allows remote building: nodes are executing the steps inside a Docker container or a Vagrant environment, the content originated from it is managed and can be published. Nodes are communicating with a broker which can be MongoDB, AMQP (e.g RabbitMQ), Redis, AWS SQS, memcache, Dynamodb.

The repositories containing the tools are currently here and in the Build Service Project organization on GitHub.

Development plan / TODO

 * Implement syncing of artefacts [Done]
 * Handle Namespaces (tag, publish) [Done]
 * Handle GitHub webhooks [Done]
 * Implement Users/Groups and login system [Progress/Done]
 * Nail down security aspects
 * Documentation
 * Release