Showing posts with label SCM. Show all posts
Showing posts with label SCM. Show all posts

Monday, October 27, 2008

Hudson, a continuous build tool

Software configuration management(SCM) is the corner stone of every good software development. SCM is a generic term which includes Source managements (CVS, SVN, Mercurial, ...), issue management (Mantis, Bugzilla, Jira, ...), CMS for the documentation management (Joomla, Drupal, ...), version management through the use of methods (scrum, xp, ...), and finally build management, ie the ability to generate automatically production ready software from the source. It is especially needed when development is test-driven, or continuous-build-driven.
To perform this goal we have many possibilities :
  • hand-written scripts in whatever language
  • use of ANT, GANT, Maven, ...
  • use of continuous build dedicated tools like Continuum, Luntbuild, CruiseControl ; these tools generally use the previous possibilities to perform the builds.
A quite new project has emerged this year : Hudson.

As the introduction says : "Hudson monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Hudson focuses on the following two jobs:
  1. Building/testing software projects continuously, just like CruiseControl or DamageControl. In a nutshell, Hudson provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. The automated, continuous build increases the productivity.
  2. Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those that are run on a remote machine. For example, with cron, all you receive is regular e-mails that capture the output, and it is up to you to look at them diligently and notice when it broke. Hudson keeps those outputs and makes it easy for you to notice when something is wrong."
See the demo videos.
For french readers, a good tutorial is available here.
It also exists an eclipse plugin for Hudson.

Friday, July 11, 2008

Distributed Revision Control

Software engineering can't be well processed without also a good SCM (Sofware Configuration System) policy. A corner stone of SCM is Revision Control which aims to trace along the development phase (and later) every artefact of the application under development.
We of course know all of us Revision Control systems like CVS and its autoproclamated successor Subversion. We know Clearcase, Sourcesafe, and so on... We know the differences between "pessimistic" and "optimisitic" approaches in revisions systems.... We also know the concept of task oriented systems which enables the developper to revision a set of changes for a specific task.
Since several years we also have to confront "centralized" and "distributed" Revision Systems, a new battle between "ancients" and "moderns".
I let you discover three tools of this new revision control paradigm
  • Mercurial : the most advanced system in my sense, and already used by several big companies or projects
  • GIT : initiated by Linus Tornval, a mix between a revision Control system and a new kind of files system itself
  • Monotone : interesting, but newer, less used and tooled fup to now
I let you also read this introduction of Mercurial I find interesting, and which gives a very good overview of the ins and outs of the paradigm and the tool.