Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Im really aware of some benefits of using Hudson as CI server. But, im facing the problem to convince my coworkers to install and use it.

To put some context, we are developing two different products (one is an enterprise search engine based on Apache Solr) and several enterprise search projects.

We are facing a lot of versioning issues and i think Hudson will solve this problems.

They argued about its productivity and learning curve

What Hudson's benefits would you spotlight?

share|improve this question
    
Why should your coworkers install Hudson instead of having a central instance? –  user1249 Nov 18 '11 at 11:51

2 Answers 2

Hudson will not solve your versioning issues, as it just builds stuff (but you can let your build process stamp in the Hudson build number as it is made available to ant). The strenght of Hudson is that it allows automated clean builds, which is a huge boon. Just say that it runs "ant build" automatically.

You must solve the versioning issue in your versioning control system. For Subversion this typically means knowing the rXXXXX number of the commit the system is built from, which your build process should embed in the build.

Perhaps you will share your current build process and why you think it has problems?

share|improve this answer
    
Now, we are using Maven2 + Nexus Repo(for internal development APIs and WS clients). The main problem we face is when the team needs some specific version of one of the products. I think that Hudson can provide a single (web interface) point to get binaries for distribution; with all the warranties that it really works. So far, sysadmins had to checkout from SVN and compile the desired branch. –  Samuel García Jan 30 '11 at 14:27
    
Moreover, i've seen some plugins that allows you to configure automated deployment process, avoiding manually installs on PRE and PRO environments. It seems really powerful tool. –  Samuel García Jan 30 '11 at 14:35
1  
@inOde, Hudson can build and deploy things, and since you run Maven already I agree that it would make sense to use Hudson for the actual promotions etc. I don't think you should use Hudson to get the right versions - but you may use the promotion process to push the versions into your local maven repositories and get the version numbers right. I would personally not depend on Hudson build numbers. –  user1249 Jan 30 '11 at 15:26
    
In any case you should argue that the libraries MUST be guaranteed to be build in a clean, reproducible fashion. This almost automatically implies a build system. –  user1249 Jan 30 '11 at 15:30

If you are already using source control management (scm) such as subversion and a build tool like ant or maven that Hudson supports then it is not that much work to set up an automated build for the projects.

The first advantage you will have is very quick notification when someone commits something that breaks the build. If a project no longer builds from your scm trunk you'll know within minutes.

You haven't mentioned if you are using unit tests but if you are, you can also be notified as soon as one fails. You can make it so that every time someone checks in new code to scm the tests are all run and notification emails delivered if a test fails.

Not only can you see that it's broken but by viewing the build history you can see exactly what code changes occurred between a build that passed and one that failed.

I've never installed hudson from scratch but it has a nice web UI, and I've added builds for new projects to it in a matter of minutes.

These are the most obvious advantages but if you want to go further you can do some other neat things like add emma or pmd to analyse the code coverage and complexity of the proejcts over time. Any good developer should get a warm fuzzy feeling looking at graphs showing how your test coverage has increased over time.

If you are having versioning problems with some of your projects that depend on specific builds of some of your other projects you'll want to do 2 things:

1) Properly branch and tag your builds using SCM

2) Look at something like ivy to manage the dependencies.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.