ABF (Automatic Build Farm) is a distributed environment for building and maintaining software packages and constructing distributions from them. ABF is designed to support different kind of target platforms and distributions providing an interface for building the same project for different platforms.
ABF Major Entities
The major actors in ABF are users who can be joined into groups. Every user and every group has his personal repository where he can build and publish his projects. A project contains source code and other files necessary to build a software product. Source code and textual files are stored in Git repository, while binary files are stored in a separate file store (and Git repository contains a special file with links to binary files at that store).
Besides personal repositories, projects can be built and published into repositories of Linux distributions developed in ABF. In terms of ABF, every distribution is represented by a platform and platform repositories correspond to distribution repositories. Note that in order to build a project for particular platform repository, one should explicitly assign that project to the target repository (and this can require corresponding privileges). For convenience, ABF allows to associate certain branch of Git repository with particular platform. Finally, for every platform its administrator sets a set of hardware architectures for which packages are built by default.
Functionality of ABF
- git repository;
- lightweight project management utility;
- project wiki;
- possibility to edit files directly from the WebUI;
- flexible permission management (on per-user and per-group basis);
- possibility to make project public (accessible in read-only mode for all users) or private;
- possibility to add comments for project commits;
- possibility to get file diffs, logs and blames using WebUI;
- possibility to fork any existing public project.
- importing project source code from src.rpm package using WebUI;
- building project into your own repository (which can be made accessible for other ABF users);
- handy task monitoring which allow to track status of all building projects;
- complete build logs;
- possibility to retrieve and locally install a built package for testing purposes before publishing it to the common repository;
- simultaneous builds for several hardware architectures and distributions;
- possibility to choose repositories that should be picked up during the build to resolve package dependencies;
- possibility to cancel a build task;
- an easy way to create and manage private repositories;
- isolated and safe builds on the distributed set of build nodes.
For platform owners and developers:
- maintenance of your own distribution using ABF;
- repository management (addition/exclusion of packages);
- possibility to create ISO images.
- user management (in particular, possibility to 'ban' users);
- complete logs of all system operations.
- convenient and clear lightweight Web UI;
- possibility to create newgroups and projects and participate in the existing ones;
- email notifications about different events with flexible setup;
- activity feed in Web UI to track all events in projects where you are involved;
- public user profile with his contact info and list of public projects.
Besides functionality described above, ABF Beta has experimental support for building a project with the subsequent rebuilding of all projects that depend on it. This allows to check if modifications made to the package will break other packages in the repository.
ABF is developed by ROSA from scratch and implemented using Python and Ruby on Rails. Beta version of ABF has Web UI only.