A distributed system is a software system in which components located on networked computers communicate and coordinate their actions by pasing messages. The components interact each others in order to achieve a common goal. Examples of distributed systems are MMORPG or peer-to-peer applications.
Nowadays a lot of organizations have their own Debian packages uploaded on their own Debian repository. Thus, they may have the need to build the packages for more than one Debian architecture. Icebuilder is the distributed system that manages package compilations for all the architectures supported in your Debian repository.
Icebuilder uses transactions so you don’t need a dedicated infrastructure for the building process, the system uses its own algorithm of load balance to choose the computer with less balance to rebuild the packages. Because of the use of transactions you can stop the build process whenever you want, and resume it from the last step.
For the building process Icebuilder uses isolated environments with virtual machines automatically installed by using libvirt. They will take care of the dependencies automatically.
Icebuilder is licensed under the GPLv3, so it is free software. When we use the word “free”, we are referring to software freedom, not that it’s without cost. You can read more information about this on what the Free Software Foundation says about that subject.
The name comes form the word “Ice” which is the middleware used by this project and the word “builder”.
Your Debian repository supports a few architecture, but the package maintainers usually only compile binary versions for a single architecture they have access to (usually i386 or amd64). The other builds are produced automatically, ensuring that every package is only built once.
Icebuilder is intended to work with the computers at the working environment. The way that Icebuilder choose a computer to do the build process is based on the load of each computer. For instance, if one computer has the lowest load of all the network, Icebuilder will choose it. If you have computers with more than one CPU, and one of those CPU is in idle, you may use that computer to build packages. Icebuilder supports crash recovery, and each time a computer turns off, the next time the computer will be turn on, that computer will continue building the previous package.
Because of that you don’t need a dedicated infrastructure 24/7 working to build packages. If you still want a dedicated infrastructures you may have it, but is unnecessary and you may saved money.
What is Ice?
Icebuilder uses some services such as IceGrid or Freeze of the middleware Ice of ZeroC. If you don’t know Ice it’s much better if you take a look on their website and then come back later.
Of course! In comparison with others automated builder networks you will save time setting up everything. The virtual machines are very easy to install or to copy. Each node uses the same virtual machines, and if you want to set up multiple nodes you only have to copy the virtual machines on each node you want to add to make icebuilder work.
People or organizations that develops their own debian packages and wants to maintain their own debian package repository and build their packages for more than one architecture.
If you are an organization, you can set up Icebuilder and it will do the work for you, little by little generating the packages for your supported architectures.
If you are a particular, you can also use Icebuilder in one computer or as much as you have.
Icebuilder does not have a stable version yet, so right now Icebuilder is supoprts i386 and amd64. But I am working to add arm.
Don’t take my word for it – try Icebuilder yourself.
Yes, Icebuilder does not provides one, so you have to install and configure your own repository. All the tests we have done has been with reprepro, you will find a lot of information on internet about how to install and configure it. If you are spanish, I recommend you this recipe to have a reprepro with uploaders.
And of course, if you are familiar with another program feel free to use it and report some feedback.
The minimum Icebuilder node is compound of one computer with Debian GNU/Linux and at least one virtual machine (i386 or amd64) at your choice.
The minimum hard disk space for one virtual machine is 5 GB, so if you set up 2 you only need 10GB and you will be able to rebuld you packages for other architectures.
About the CPU, your CPU needs to support kvm. You can also set up a node without kvm support but the build process will be slower.
There will be a Debian package soon but, for the moment, please see our page about getting Icebuilder for more information.
You can get help by reading the documentation which is available both on the web site and in packages you can install on your system. You can also contact me via e-mail see the contact page. One can even hire a consultant to do the work.
If you would like to collaborate with the icebuilder development contact me via e-mail or see the contact page