Showing posts with label continuous integration. Show all posts
Showing posts with label continuous integration. Show all posts

Tuesday, August 4, 2009

Don't you love Continuous Integration?

Done right, Continuous integration (CI) can make your software development efforts to be more fun and enjoyable. Some bassic thought we should keep in mind about it:

  • Avoid any guess work by using an authoritative version control repository. Don't leave anything to the mind of any person. They may not be with us tomorrow.
  • Stop doing tedious tasks manually (stop wasting time)... Instead, automate, automate and automate all you can. Automate compilating, testing, code inspections and installers creation.
  • Think in deploy since the first day.
  • Be sure to have trustworthy and frequent feedback about your code base.
But also! Don't forget the human touch of manual testing. After all the code has being compiled, tested, inspected and deployed automatically, use the software as a real user will do. Check the layout, images and the stuff that real users will pay attention to.

I've being reading a lot about CI lately, so, I just wanted to make a brief about what I should keep in mind while designing a new CI environment.

Finally, you may want to take a look at this funny but clear video about CI. Got any comments?

Saturday, December 8, 2007

A real Continuous build server

Last week I was in a Microsoft seminar about all the new stuff in VisualStudio 2008. Something new in VSTS is Team Build 2008, the continuous build server from Microsoft. Since, I haven't found much of it in the web, I'll wait to meet someone who really uses it. Meanwhile at work, we use CruiseControl.net, its an excellent, full customizable build server, and it is Open Source. It's really cool. So, as a way to to contribute to the community, let me show you our build server implementation:

Here, you can see the web dashboard. On a single page anyone can know the state of our code base (right now, we got 500.000 lines of .Net code (not taking automated tests into account).

Every time a developer delivers some code to SourceSafe (yes, believe it or not, we still use VSS), CruiseControl compiles the project's code and runs all of our automated tests. If the code compiles and all tests pass, the build is shown in green (success!), otherwise, its a failed (red) build. Then, you can check the build's detail page. CruiseControl stores all the builds history and details. Here's how the build detail page looks like:
.

We use a full open source approach for enforcing our TDD and CI in .NET:
- NUnit: Unit testing
- Rhino Mocks: Object mocking framework for .Net. IMO, it's better than NMock2.
- NCover: Reports the code coverage of our unit and integration tests.
- SourceMonitor: Gives us code metrics. For example, # of lines of code and method complexity.
- CruiseControl.Net: Our build server.
- Nant: Scripts that CruiseControl executes on each build.

So as you can see, you can use open source tools to leverage a continuous integration strategy. I'll be glad to know if you got questions or comments!