A new continuous integration server for Groovy
The Groovy project currently makes use of the Codehaus architecture (Bamboo) for continuous integration. Unfortunately, this infrastructure isn't sufficient for our needs: we need to test builds on various systems (GNU/Linux, Windows, Mac OS), multiple JDKs (from 1.5 to 1.8) and numerous branches.
After having looked at various solutions (including famous CI server vendors and online services, which were either too slow or not supporting what we need), we settled our mind on having a dedicated continuous integration server. More precisely, we want to host a TeamCity build server. For the rationale of choosing TeamCity, you can take a look below.
Looking for a sponsor
Basically, the Groovy development team is looking for a sponsor for such a server. The server will host several build agents itself, so it needs both memory (8G to 16G) and CPU. Our idea is also to make possible for people to contribute build agents, significantly improving the number of environments we will be able to test. This means the build server will host a lot of build results, so at least 1TB of storage is mandatory.
An example of suitable server can be found here: http://www.online.net/fr/serveur-dedie/dedibox-lt (~50€/month). (For administration, it is strongly preferred if the server is hosting GNU/Linux)
After having looked at various continuous integration servers, we found that TeamCity had several advantages for our needs:
- straightforward setup
- immediate support for multi-branches builds
- easy "conditional" builds (environment based)
- out-of-the-box support for Gradle and Gradle Wrapper
- immediate feedback of failures
- support for pre-tested commits
- very slick UI
- JetBrains provided us with a free OSS licence
But more importantly, we plan to open the CI server to contributors, by allowing them to run build agents on their idle systems. The idea is that people would be able to run build agents on their computer, so that we have an increasing number of environments available. One for example could run an agent on Windows, running JDK 8, while another would have Java 7 on Mac OS, ...
TeamCity makes it very easy to distribute and contribute such agents, making "hardware" contributions simple to the user and very interesting for us.