Continuous Integration with Nant - continuous-integration

I am preparing to use continuous integration for the first time. I will be using Nant for the automated build and testing tasks, and am trying to find the appropriate CI tool to poll the repository and execute the Nant script.
I have so far loosely researched the following:
Hudson
Cruise Control
Draco
My sense so far is that since most of the work will be done by Nant, Draco would be fine because it is supposed to be easy to install/setup. Cruise Control and Hudson, on the other hand might provide better reporting options.
What is the best way to perform Continuous Integration when using Nant for the build and test tasks?

We use CruiseControl.NET as our CI server along with our full build system being in NAnt. It has worked exceptionally well over the past 5 years. I've since looked into other alternatives and have not been able to find any compelling reason(s) to switch.
CruiseControl.NET has amazing support for different source control systems. Also, I enjoy how extensible their application is as we've built a few systems that integrate into it.

Have you looked into TeamCity? I use it for my personal projects.

I can't speak for the applications listed, but I'm a huge fan of buildbot: http://buildbot.net/trac
It will build/test on any platform that runs Python (so if your software is supposed to work on multiple OS's each can be covered), it is very easy to use, and extremely extensible.

CruiseControl.NET rather than normal CruiseControl is what I'd recommend, although I have limited experience here.

I won't venture to say which one is best, however CruiseControl.NET certainly works very well, especially with NAnt-based builds. Personally speaking, though, it's the only one I've used.

Cruise Control seems to be the de facto standard out there (though I have no data to back that up).
Another option you might consider (though I haven't tried it) is ThoughtWorks' new Cruise product (see http://studios.thoughtworks.com/cruise-continuous-integration). ThoughtWorks developers were the fathers/mothers of Cruise Control years ago. It's free for up to two "agents".

We have started using TeamCity in my company and I must say that I am really impressed by this product. We tried CruiseControl.NET before, but TeamCity is much easier to configure and the configuration is much more transparent since you can control almost everything from the Web GUI.

As some other people already suggested, I will say TeamCity.
You may still wait until the end of this week, as their new version (TC 4.0) will be released (maybe today, maybe tomorrow)...

We use CruiseControl.NET and take advantage of it's preprocessors.
For the NAnt part, we use UppercuT. UppercuT uses NAnt to build and it is the insanely easy to use Build Framework.
http://code.google.com/p/uppercut/
Some good explanations here: UppercuT

Our company uses Hudson in coupled with NAnt. From my perspective, it works nicely.

Related

Continuous Integration tools

Im doing research regarding continuous integration tools and there benefits. For my research im looking at the following tools:
GitLab CI
Jenkins
Bamboo
GoCD
TeamCity
Now I wont bother you with all the requirements and benefits. But so far im not finding so many differences between the tools except for these:
Fan-in fan-out support GoCD
Community size, Jenkins and GitLab seem to have most contributors
Costs
Open source or not
Amount of plugins available
I was wondering if some people who have had to choose a continuous integration tool aswell could share there experience and why they chose that tool and if there are certain differences that are worth thinking about before choosing which I didn't cover.
Now im leaning towards GoCD because of fan-in fan-out support and the visualisation of the continuous delivery pipeline does anybody have experience with the support on issues for this tool?
Thanks in regard,
Disclaimer: I was an active contributor to GoCD before previous Fall.
I haven't used GitLab CI so won't talk about that :) Also, I haven't used any of these tools in the past one year.
I think TeamCity is a good CI tool. It integrates very well with IDE if you want to debug some failures. The test reports are brilliant. But I don't think they are that advanced in CD space and in my opinion you need both. But if you are interested only in CI, you might want to give it a look. However, you will miss on some of the good features of GoCD I've mentioned below.
Jenkins has a huge community but Jenkins has its own disadvantages. Many a times one plugin doesn't work due to another plugin for some compatibility issues for instance.
GoCD has Fan-in/Fan-out support which avoids many unnecessary builds saving a lot of build time and resources. The value stream map is intuitive and helps to get a better picture of the build stage from a developer's, QA's or even Deliver Manager's point of view. The pipeline modeling in GoCD is also very good. If you read Jez Humble and David Farley's book on Continuous Delivery, you will see the power behind such a build design.
Now, to your second question:
Now im leaning towards GoCD because of fan-in fan-out support and the
visualisation of the continuous delivery pipeline does anybody have
experience with the support on issues for this tool?
Good to hear that :P I love GoCD. The support is good. If you choose to go the Open Source way, the mailing list is pretty active. You can expect a reply from the GoCD team within a day or two. Of course, your questions have to be genuine and specific. Looking through the forums before posting a question helps :)
You can also choose to buy support for GoCD from ThoughtWorks. They used to offer multiple support tiers, not sure of the current support model. You might face issues only when your DB grows too huge (~5-7 GB) when you might want to go for the proprietary Postgres DB support from ThoughtWorks. I've seen very few users of GoCD with that DB size.
I have a lot of experience with Teamcity and some with Gocd. If you are interested in fan-in/fan-out it's also possible to do the same in Teamcity -- it's called Build Chains.
Also there is a good post about this topic on official blog.
If I could choose I would prefer Teamcity. It's more mature and more feature rich product suitable for use in corporate environment.

Agile requirement fo continuous integration?

Taking a indepth look at CI and a question rose up. Is a agile development process a pre-requisite to be able to work with Continuous Integration?
Would it be possible to implement a CI process in a traditional, team based
development process?
Gut feeling says me that agility is more or less a pre-requisite, but "gut feeling" is not an argument when talking to management... :-)
And is there any documentation out there about this? All I found take it for granted
that you already work agile.
I would argue that continuous integration is good practice in almost all development teams, whether you are following an agile process or not (along with source control and free coffee). I've used it in agile teams, traditional teams and when I am coding alone - it has always added value.
For any development process, CI gives you:
Immediate feedback on any build errors (e.g. when a developer has forgotten to add or check in a file)
Immediate feedback on unit test failures (if you have written unit tests, which again are a good idea whether you are following an agile process or not)
Your QA team having up to date binaries to test with
Automating the build process (which greatly reduces the chances of error when you release your software)
Have a look at Jenkins - it's free and pretty easy to set up.
CI is not really related to agile or not-agile methodology (although some state to require it, while others just indirectly imply it or not mention at all)
CI is the only tool (yeah suppose it like a keyboard) which helps you during development to eliminate some bugs ASAP
actually the only thing you need to do CI is configure version control system with some build tool (like post-commit hook), and ask all developers to commit/fetch code as soon they pretty sure that it will compile - this will be enough to start continuous integration, then of course you can add unit test etc
so, the answer - agile is not requirement and you can implement CI in any process, without implementing XP, Scrum, Whatever methodology

Continuous Integration and Release Management

We are a small software development shop, small meaning one perm. software engineer and two contractors. I am considering using a continuous integration and release management process since our product needs to be certified by the FDA. Our development environment is WinCE 6.0, ARM 7, both using C/C++. I am looking for recommendations for open source tools to improve our process.
We are using Subversion for our repository and in the process of setting up Bugzilla as well. Would TeamCity be a good addition to this suite of tools?
Good luck with the FDA support; my company has been moving towards FDA certification and it is a crazy process.
I would definitely recommend setting up an automated build process as soon as possible in your development process; even if it is not a CI build process. I have had experience setting up an automated build process in both new and existing code bases and it is much easier to implement a build process in a new code base. If you are planning on a build process from the beginning, you can make changes to the structures of your code\project files (I work with C#) so that it will make setting up a build process easier.
As for build servers, yes, I would recommend TeamCity. I have been using it at my company for about a year to run a CI, nightly and QA build process. Overall, it is a very easy tool to configure, use, and maintain.
I also know that Jenkins (Hudson) is a very popular build server. However, I do not have any experience using it, so I cannot give you a good comparison.
Hope this information helps.

CI: Automated Build Studio vs. Hudson vs. Atlassian Bamboo

What would be the best tool to use that can support cross platforms, remote builds and deployment for windows, linux and macosx and cost effective?
Right now were using Groovy(grails), Java, and .NET
Thanks
Your requirements are pretty vague, so expect vague answers. Hudson sounds like it would be a reasonable fit (cross platform, remote builds, etc), but your best bet is to actually try it! Hudson has a good community and plenty of activity. Read the wiki, search the mailing lists and ask questions when you get stuck.
The "cost effective" requirement is nearly impossible for an outsider to measure because we have no idea what tradeoffs you're willing to make with build vs buy, nor do we know how valuable your time is compared to your money.
Wikipedia's Comparison of Continuous Integration software may be helpful if you want an overview of what else is out there.
My company uses Bamboo. I can recommend it as a decent product. I have not used Hudson extensively enough to say that it's better, although my limited experience with it says that it is at least as good.
The fact Hudson is free has to be one plus for it.
Try them both out, and see which you like better. Bamboo has a 30 day free trial. link
One thing about Bamboo that has been a negative is that we have a huge number of plans, and plan maintenance and creation is all Web GUI driven. There is very little room to automate plan creation, from my experience. I believe Hudson "plans" can be created almost on the fly via command line arguments.

Continuous integration / Cruisecontrol advice

I've been tasked with setting up a continuous integration server for our project and am weighing up the options.
I would like to use cc.rb rather than cc for the simple fact that I'd rather be writing Ruby than XML. From what I can see cc is a more mature product and comes with more features out of the box.
So I would like to know if you were setting up an integration server with the following requirements, which system would you choose and how would you go about it?
Mercurial support
Run selenium test suite on multiple platforms
x10 support for build lights (not essential)
Any guidance would be appreciated.
Regards,
Chris
yup I agree, hudson is much more easier to manage and has a variety of nifty plugins that make it flexible
It does have mercurial support
http://wiki.hudson-ci.org/display/HUDSON/Mercurial+Plugin
Selenium support is also available
http://thinkvitamin.com/dev/easy-automated-web-application-testing-with-hudson-and-selenium/
Have you considered using hudson. It has support for multiple languages and pluins and it generally very flexible.
I believe it has mercurial support and you could prob hook in selenium test somehow.
Karl
Well personally I would use the original CruiseControl, but that's probably because I helped write it. ;)
There are lots of tools available to do what you want (CC, cc.rb, Hudson, etc.). If you just care about running those tests then most of them will do. If you want a more polished experience and a few more features (like IDE integration) then tools like Zutubi Pulse (or Bamboo or Team City) start to look good. If you want to get into the full lifecycle (CI->test->deployment) and reporting from multiple tools then something higher end like AnthillPro might be the way to go.
So really a question of what else you think you might want to do.

Resources