I'd like to manage Hudson's configuration files with subversion for backup. The Hudson Wiki lists the directory structure of $HUDSON_HOME like so:
HUDSON_HOME
+- config.xml (hudson root configuration)
+- *.xml (other site-wide configuration files)
+- fingerprints (stores fingerprint records)
+- plugins (stores plugins)
+- jobs
+- [JOBNAME] (sub directory for each job)
+- config.xml (job configuration file)
+- workspace (working directory for the version control system)
+- latest (symbolic link to the last successful build)
+- builds
+- [BUILD_ID] (for each build)
+- build.xml (build result summary)
+- log (log file)
+- changelog.xml (change log)
Obviously jobs/[JOBNAME]/builds shouldn't go into source control but config.xml is a good candidate. Plugins and fingerprints are less obvious.
How do you manage your Hudson configurations?
I do use an SCM for managing my Hudson configuration. I keep the top-level config.xml and the config.xml for each job. I've got a little script that I use to fetch the configs from Hudson and commit/add/delete them as necessary (along with some other bells and whistles that makes managing the configuration easier).
Re Rob Hruska's points, for my particular setup:
All that said, every situation is different. The management I do for the configs didn't (and doesn't) come for free. A cron job that zips everything up nightly is definitely cheaper and may be sufficient, too.
A SCM probably isn't the best tool for backing up Hudson's workspace - it would be like using an Subversion to store preferences for a game or the contents of database tables for a web application. Along with that, it doesn't seem necessary for the following reasons:
svn commit
. Since this would probably be a manual step, it leaves room for human error.All in all, it would just seem a bit unwieldy to use Subversion for this task. For backing up, I would recommend just setting up a cron job that does a tar cvzf $HUDSON_HOME
. You could optionally omit the build directories, but that seems a bit unnecessary if you've got enough disk space.
Edit: Regarding the differences between this and oeuftete's answer, my answer is simply from my experiences with how I use Hudson. His/her answer definitely provides a different perspective, which is nice. I definitely agree with it in that every situation is different, and may require different means to satisfy an end.
I found a good cookbook for setting up SVN backup for Hudson: http://javaadventure.blogspot.com/2010/07/keeping-hudson-configuration-and-data.html
I've adapted it for my own needs, but the things you should backup from Hudson home directory are:
The link also has some extra SVN goodness, like removing non-existent job configs, etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With