CI All Around
My good friend, Claudio Figueiredo, reminded me that I shouldn't choose a tool that's so important to us without trying a few of them (god damn you for giving me more work, though, lol).
So I decided on trying JetBrains TeamCity, as JetBrains has been a sponsor of Stormwind Project since the very beginning.
Introduction
First of all, I liked the tool very much. It's very easy to configure, it's intuitive and I got my pipeline of builds very quickly.
Hmmm... I see a catch coming...
You are right, my insightful friend. There is a catch. I hit the same wall as in Bamboo (I'll explain more about Bamboo later). After setting the basics up, I decided on getting the extended stuff going, like: NDepend, NCover, Simian, NUnit and stuff like that (even our own custom made plugin). Guess what? No can do!
I could set up NUnit, but I had to use the NUnit Runner that JetBrains built. Don't get me wrong, JetBrains RULE! They build software that I don't imagine to build in the next 10 years. The problem here is that I don't want to use THEIR version of NUnit (currently they have 2.4.6 or something). I want to use my version of it. Yes, we are using 2.5.0 Beta. And it is awesome.
Assumptions
When you are building a tool that's as important as a Continuous Integration Engine you NEED to make sure that it's as extensible as it gets. CCNet is still the tool of choice for me in that area. Within minutes I get a new report up and running, provided that the plug-in generates xml and I have a stylesheet for that XML. Come on, how cool is that?!
The problem here is the assumptions that if people are adopting your amazing CI Engine (and don't get me wrong, they are both AMAZING!!!), they won't need anything else. You and I both know that's not the case.
Build servers are very peculiar beasts. Each company have their own needs and customizations. Even project-level customizations. If you make assumptions on the way people are going to use the tool, then you will have issues with that.
My Dream CI Tool
Instead of just whining I'll just give you a few characteristics of what would be my dream CI tool (and it's probably coming soon anyway):
- Easy to use and create new projects
- Allow me to have pipelines (builds that are kicked when others succeed)
- Allow me to extend it using Xml/Xsl (or a similar way that I can interact with it without having to resort to coding plug-ins)
- Allow me to write plug-ins
- Allow me to keep artifacts
- Allow me to customize my dashboard (So, in an open source projects show the logo and successful builds so the users can download both source and binaries)
- Have a consistent notifying mechanism, like CCTray.
- Allow comments and taking responsibility for a broken build.
- Allows anon access as well as auth access.
- Have a set of reports on things like succesful builds, failed builds, time to complete build, builds that it took to fix things, and stuff like that.
I know that's asking for a lot, but the tools out there are almost here. They are very close. My problem is that each of the tools fails in some respect.
Bamboo and some issues
Bamboo has the problem of not supporting NCover, NDepend and company. That is an issue for me, because I like those tools a lot.
They give invaluable insight, and I'm not ready to drop them in the first problem that comes my way.
Right now I've decided on building a plug-in for Bamboo that will allow me to just get an artifact (xml) and apply an XSL to it and render it as a build result or something like that.
How hard can it be, right? (Famous Last Words)
Call for Help
I know that you very smart guys out there can help me out here. I am a newbie in Java, and all plug-ins for Bamboo have to be written in Java. Thus I need someone to help me in creating this thing.
You'll be fully compensated by taking this responsibility. You'll have the amazing compensation of knowing you have helped a lot of people out there that use the product and have similar needs. Also we'll donate one kilo of pasta for Swedish ducks for everyone that applies (no we wont, just kidding lol).
So if you feel like doing some cool coding, just give me a heads up and we can work together to get this working!
Conclusion
Out of all my options, I'm staying with Bamboo right now. It seems to be the most configurable one so far. I hope things will clear up in the next days.
#152