Posts to Continuous Blog
Hudson 1.355 Released
The release of 1.355 came out earlier this week but I hadn't had the chance to write anything up about it. Of course, the work never stops on Hudson so we almost have 1.356 ready to roll out the door, but then Kohsuke tweeted this:
Because of the data center migration going on, I won't be able to release #hudsonci today.
I won't go into details on some of the infrastructure changes we have lined up just yet, so here's the breakdown of 1.355 <!--break-->
Bugs fixed- Added the slave retention strategy based on a schedule.
- Added to configure charset option of Mailer.
You can go grab the latest .war file straight from hudson-ci.org or if you're using a native package, use your package manager to upgrade.
----
A new blog for Kohsuke
Historically, our fearless leader Kohsuke has blogged on Java.net. The setup made a whole lot of sense when Kohsuke was employed by Sun, then Oracle, which sponsors and runs Java.net. In a post earlier this week discussing console markups, Kohsuke casually pointed out that he will be cross-posting to Java.net, and his personal blog located at kohsuke.org. The first post over on Kohsuke.org welcomes us:
For the longest time I haven’t really done anything about kohsuke.org, but as I left Sun/Oracle, I decided to put a bit more effort into it. So this is the new home.
For the time being, I plan to post my blogs both on java.net and here.
If you're a reader of feeds, I recommend adding the rss feed for the blog to your list of interesting continuous integration/hacker feeds.
Hudson 1.354 Released
Hear ye, hear ye! Behold, the first release of Hudson ever made by a not-employed-by-Sun Kohsuke (as we covered last week). This iteration of Hudson contains only bug fixes, check the listing below for the specifics on which bugs have been fixed (1.355 is looking like it will contain a number of fixes as well). The release of 1.354 comes slightly later than usual given some of the logistics that needed to, or still need to be resolved.
One of the infrastructure issues that's half-way resolved is the question of Debian/Ubuntu packages. Kohuske has packages uploaded in an experimental apt repository on hudson-labs.org which you can try out. That said, it's not entirely clear whether this is going to be the preferred means of distributing native Debian/Ubuntu packages in the future (your mileage may vary). <!--break-->
Bugs fixed- POM parsing was still using the module root as the base for relative paths for alternate settings files. (issue 6080)
- Fix dynamic updates of build history table when CSRF protection is turned on. (issue 6072)
- Improved the error reporting mechanism in LDAP setting.
- Raw console output contains garbage. (issue 6034)
- Fixed a file handle leak in the slave connection. (issue 6137)
- Quiet period wasn't taking effect properly when doing parameterized builds.
The release of 1.354 contains a total of 51 commits to the "core" part of the tree, from 9 different contributors
- abayer
- drulli
- kohsuke
- manuel_carrasco
- mindless
- sogabe
- swiest
- vlatombe
- wyukawa
You can go grab the latest .war file straight from hudson-ci.org or if you're using a native package, use your package manager to upgrade.
Pre-tested commits with Git
At the first Bay Area Hackathon in mid-2009, the topic du jour was "pre-tested commits." As potential implementations of the concept were discussed over burgers from Brickhouse in downtown San Francisco, we realized as a group a few things: first, those burgers were delicious, but more importantly: pre-testing commits is very-SCM dependent and involves a lot of moving parts. One of the positive changes that came out shortly after the meet up was the support for "Concurrent Builds", allowing a job to be executed concurrently on different slaves, a precursor to pre-tested commit support. Fervor for the pre-tested commit feature lowered as time went on, the feature being too dependent on the SCM itself was generally accepted as the reasoning behind the feature languishing.
Chances are the feature is in fact too large for Hudson to support alone. It requires Hudson, the SCM and likely a third tool to work in concert together to perform such a feat.
With Git, and the phenomenal code review tool Gerrit, and the Gerrit plugin by intrepid plugin developer, Jyrki Puttonen, pre-tested commits with Hudson, Git and Gerrit are possible. <!--break--> For Git users more familiar with the distributed Git workflows, working with Gerrit should seem familiar. Gerrit has JGit, a Java implementation of Git embedded within it, along with an sshd stack, meaning Gerrit can masquerade as a "regular" Git remote repository. Developers can push and pull to the repository just as they can with any other Git repository (provided they have permissions of course). I won't delve too much into using Gerrit specifically here, but the pre-tested workflow with Gerrit and Hudson would look something like this:
- Dev creates a topic branch to work on a change
- Code is written (and hopefully tested) and committed locally
- Dev pushes commit(s) to Gerrit
- Hudson job (set to Poll SCM) picks up the patch, runs the job and marks it as "+1 Verified" or "-1 Fails"
- If the job fails or is unstable, the change should be reworked or corrected (typically with git-rebase(1))
- If Hudson says the change is good to go, it can be cherry-picked or pulled directly from Gerrit.
To learn more about Gerrit, check out the project page on Google Code; information on the Gerrit plugin can be found on the wiki.
Kohsuke leaves Sun
Those of you on the users@ or dev@ mailing lists have likely already read that Kohsuke (left in the photo), the founder of the Hudson project, is leaving Sun. I say that he is leaving Sun, instead of leaving Oracle as Kohsuke worked at Sun for nine years and Oracle only a few months. In those nine years at Sun, Kohsuke has worked on some great products, the most notable of them being Hudson.
Per Kohsuke's post:
Where am I heading next? I'm actually starting my own company to take Hudson to the next stage.
What this means for Hudson still isn't certain yet, fortunately it means that Hudson will continue to have at least one full-time developer. It remains to be seen where KohsukeCorp (the name has not yet been disclosed) will focus within the Hudson code-base. For the greater user-base of Hudson, this means that the schedule for releases may slow down during this transitional period, there are some logistics to work out with Oracle regarding some of the hardware Hudson has traditionally used to host JIRA, this blog, and a number of other machines helping support the Hudson project in one fashion or another.
The next couple of months will be interesting for the Hudson community; as per usual you'll be able to get the latest updates from this blog or the @hudsonci twitter account. I'll let Kohsuke finish this post off:
And finally, big thank you to everyone in the Hudson community, and in a broader java.net community. I wouldn't be here without you guys, and I feel very proud that I'm a part of it.
Announcing the Hudson 2.0 Roadmap
There have been numerous discussions on the mailing lists over the past couple months regarding memory issues, speed regressions and a number of other issues regarding performance of Hudson, particularly under high load. In an effort to address these concerns, the Hudson core team has announced a roadmap for Hudson 2.0.
In a message to the dev@ mailing list, Kohsuke said of Hudson 2.0:
As it stands now Hudson 1.0 is a good proof of concept, it's time to take the lessons learned and build a truly solid enterprise-ready continuous integration server <!--break--> Some notable points from Kohsuke's announcement with regards to the Hudson 2.0 roadmap, which is expected to ship late Q4 2011, are:
- Implementation of core in portable C for greater speed and code readability
- Selection of a better license, namely the WTFPL
- Revamped storage architecture around the Oracle 11g Database to provide more optimal synergy over flat XML files.
- Embedding the Mono, Python, V8 and Lua engines allowing plugins to be written in C#, Python, JavaScript or Lua.
- Adoption of the Hudson Eagle as a mascot instead of the butler
- "Social" support will be merged into core, integrating Hudson directly with Facebook so you can share test failures with your friends.
Hudson 2.0 is expected to follow in the intrepid footsteps of other major revamps such as Netscape 5 and Perl 6 in its ambitiousness and innovation.
Regarding the start of April
I had briefly contemplating what sort of silly posts I could write to celebrate April Fool's Day, when I sat down to write out some of them, I got a few sentences in and decided that they just weren't funny enough. Either I have very high standards, or I'm terribly unfunny.
The web is awash with April Fool's articles, comics, headlines and everything else, so instead I'm going to just give you a few useful links.
A couple of Twitter links
Besides the @hudsonci account, you can also follow a couple of Hudson's more notable (or was it notorious?) hackers, such as our benevolent dictator, Kohsuke Kawaguchi. Ben Shine from Yahoo! who's been working pretty hard on making Hudson prettier. Then there's John Ferguson Smart who's been working on a Hudson book. Of course I've tried to collect as many Hudson contributors as possible in the @contributors Twitter list.
Hacking Hudson
When starting to hack Hudson, it's useful to start by understanding how to build Hudson. If hacking Hudson's core isn't your cup of tea, you can always start with the plugin tutorial and try your hand at writing another awesome Hudson plugin. If you find yourself struggling to find out what methods do what while you're hacking, you can always visit the regularly updated, online Javadocs for Hudson
Communicate The two primary mediums for communicating with the Hudson community are through the mailing lists and the IRC channel. During "regular business hours" for the pacific standard time zone, you can usually get some decent real-time help or answers to most of your queries.
I'd list more, but I'm too busy reading about Google's nuclear weapons program. ;) <!--break-->
Screencast: Python on Hudson (Part 1)
After Hudson got some major publicity at PyCon Atlanta 2010 I haven't been as quick as I would have liked with Python-related posts and tutorials. I use Hudson to build and test a number of pure Python modules and C extensions across numerous Python versions (covering 2.4 - 3.1). For most beginners, or those simply looking to get started with Python on Hudson, starting with my job configurations is too much at once, so instead I wanted to start at the "beginning" so to speak.
The trouble with getting people started with Hudson, given how simple and visual it is to use, is that articles with sample configurations are not particularly useful; a screencast however is a good medium for visually walking somebody through Hudson. The screencast below (also on YouTube) is the first in a series of screencasts I'll be doing, not only for Python on Hudson, but for Hudson overall. It is just over four minutes long, and covers setting up a simple continuous integration job for the Eventlet library (which is hosted on Bitbucket)
Hudson 1.353 Released
This week's release comes slightly later than usual and is mostly a clean-up of a few bugs. Due to a problem with the Kohsuke's GitHub mirror of Hudson's core, I can't mine the commits for interesting information as per usual so you'll just have to trust that Hudson 1.353 is chock full of good, wholesome bug fixes. If the problem persists next week, I'll find a better way to dig up information on particularly releases that doesn't depend on the GitHub mirror.
- Tagging a repository can result in NPE.
- Fix possible form submission error when using multiple combobox elements. (issue 6025)
- Better escaping of test case names in test results pages. (issue 5982)
- Make radio buttons work in repeatable content, such as a build step. (issue 5028)
- Fixed the handling of verifying that the POM path entered for Maven projects exists. (issue 4693)
- Added link to builds in buildTimeTrend (issue 3993)
You can go grab the latest .war file straight from hudson-ci.org or if you're using a native package, use your package manager to upgrade.
Resurgence of Releng
A few weeks ago I passed a job listing that I had found through one of my many Google Alerts for Hudson-related queries to Andrew (abayer), following up on one of those job listings Andrew recently signed an offer to join the nice folks over at Digg to be their resident "build guy." On its own I thought "great for Andrew!" and nothing more, then I saw this thread on reddit which poses the question:
Anyone here a build engineer, or part of the build team? Could you please share your experience?
It seems, to me at least, the notion of "release engineering" is making a come-back, particularly in the aging "Web 2.0" world where companies like Digg, Facebook, Reddit, Twitter, etc are anywhere from five to ten years old. As these companies have aged a couple of important things have happened, their code-base has aged increasing the possibility of bitrot, but they have also expanded in terms of headcount. Start-ups that might have once slighted larger corporations like Oracle, Cisco VMWare and IBM for their burdensome process and longer release schedules now find themselves ensnared with massive code bases, larger development teams and complicated deployments.
Over the past few months we've seen Hudson being used in a number of different contexts, it was pitched at PyCon as part of a larger appeal to the Python community to get on the continuous integration bandwagon, we've seen a few posts from developers using Hudson for testing and packaging Android and iPhone apps, .NET developers are jumping on board as well. Across the board it feels like Hudson is being more and more widely used, it is no longer the mainstay of the Java shop's toolkit, it's become a must have for all developers.
With the allure of continuous deployment and Hudson's lowered barrier to entry for testing, packaging and automating releases, is release engineering making a comeback?
This Week in Plugins
I apologize for the lack of posts this week, I've been quite pre-occupied and a quirk in the twipFromSvn.py script prevented the generation of this post's contents earlier; thanks to rpetti it works again!
This week was an interesting week in plugin development, a slight regression in the release of Jabber notifier plugin 1.7 resulted in the rapid release of a 1.8 release by kutzi. The Fitnesse plugin saw multiple releases again this week, along with the Libvirt Slaves plugin which has seen an amazing number of releases since it burst onto the plugin scene two weeks ago.
There were a few new and notable plugins released this week such as the iPhoneView plugin which adds a fancy view to make checking Hudson all that prettier on an iPhone or iPod Touch, the cross-platform shell plugin was released, aiming to solve the problem of running a job on both Windows and Unix slaves. My favorite new plugin release this week has to be the Gerrit plugin which made its debut and shows a lot of potential to enable the "pre-tested commit" workflow with Git and Gerrit <!--break--> * Mar 20, 2010 * Fitnesse plugin 1.2 * Labeled Test Groups Publisher 1.2.6 * Libvirt Slaves plugin 1.3 * Monitoring 1.13.0 * Perforce Plugin 1.0.25 * iPhoneView plugin 0.1 * instant-messaging plugin 1.6 * Mar 21, 2010 * Fitnesse plugin 1.3 * Ivy plugin 1.4 * Mar 22, 2010 * Buckminster 0.9.4 * Cobertura plugin 0.8.11 * Fitnesse plugin 1.3.1 * Gerrit plugin 0.1 * JIRA plugin 1.21 * Maven Release Plug-in nexus helper 0.0.3 * Nested View Plugin 1.1 * Performance plugin 1.2 * Sonar Plugin 1.5 * Subversion Plug-in 1.15 * Translation Assitance plugin 1.4 * Mar 23, 2010 * Subversion Plug-in 1.16 * nabaztag 1.9 * Mar 24, 2010 * Buckminster 0.9.5 * Jabber notifier plugin 1.8 * Mar 25, 2010 * CollabNet Plugins 1.1.4 * CVS Plug-in 1.1 * Dashboard View 1.4 * Libvirt Slaves plugin 1.4 * Perforce Plugin 1.0.26 * Mar 26, 2010 * CMake plugin 1.2 * GNAT plugin 0.2.2 * Groovy Postbuild 1.2 * cppunit plugin 1.3 * cross-platform shell plugin 0.2
Links for 2010-03-23
While I work on some screencasts and start to get more "Spotlight" interviews lined up, I figured it's time for a link roll-up for your Tuesday morning reading.
We caught a glimpse of a little Java scoreboard app for Hudson from @davefollett
Matt Patterson of Reprocessed.org wrote a great post on continuous integration with Rails with Hudson, running both Rspec and Selenium tests.
At the hackathon at Hacker Dojo on Saturday, Kohsuke pointed us all to the Hudson Cafe Press store, where he gets all his Hudson threads.
C.J. Adams-Collier seems quite pleased to have builds for IronRuby back online, powered by Hudson.
We got a sneak-peak into the first chapter of John Ferguson Smart's Continuous Integration with Hudson book.
Ben Shine showed off some of his UI mock-ups for Hudson.
Hudson 1.352 Released
After an exciting week that saw the rushed release of Hudson 1.351 on Monday following a fairly serious regression, Hudson 1.352 was released mid-Friday with a good mix bug fixes and enhancements. Bundled with this release was another localizations drop including translations for ca, es, fi, fr, hi_IN, it, nl, ru, and sv_SE locales. In addition to the nice fancy new community contributed translations, which you can help with by installing the Translation Assistance plugin, the 1.352 release includes the subtle enhancement of hyperlinking URLs in the console output.
In general, 1.352 is looking like a very solid release, that said, here's the breakdown for this release:
Bugs fixed- Fixed a file handle leak when a copy fails. (issue 5899)
- Replace '>' with '_' in username, as already done for '<'. (issue 5833)
- Fix editableComboBox to select item when mouse click takes more than 100ms. (issue 2722)
- Fixed NPE when configuring a view without "Regular expression".
- Page shouldn't scroll up when the user opens/closes a stack trace in the test failure report.
- Fixed a bug where Hudson can put a wrong help file link. (report)
- Fixed Maven site goal archiving from slaves. (issue 5943)
- Fixed a regression with NetBeans Hudson plugin progressive console output. (issue 5941)
- Fixed a situation where a failure in plugin start up can prevent massive number of job loss.
- Supported JBoss EAP 5.0.0 GA. (issue 5922)
- CLI commands on protected Hudson now asks a password interactively, if run on Java6.
- Added CLI 'login' and 'logout' commands so that you don't have to specify a credential for individual CLI invocation.
- URLs in the console output are now hyperlinks.
- Improved the URL annotation logic.
- Add drag&drop support for f:repeatable lists and use this for the JDK/Ant/Maven installations in global config so these can be reordered.
- Integrated a new round of community-contributed localizations (ca, es, fi, fr, hi_IN, it, nl, ru, and sv_SE locales.)
<!--break-->
This release contains 63 commits, from six different contributors including our very own Subversion-loving Mike Rooney (mcrooney).
You can go grab the latest .war file straight from hudson-ci.org or if you're using a native package, use your package manager to upgrade.
Recap of Hackathon Part One
Kohsuke just posted a brief write-up on his personal blog about the first day of the Bay Area Hudson hackathon/meetup. He writes:
Total of 9 people came and we had a great time talking about infrastructure issues, possible enhancements, design dicussions, exchanging tips and plugins that they've developed, and otherwise building personal relationships.
A number of folks joined us on the #Hudson IRC channel on Freenode and the WebEx conference, participating remotely. Since day one was primarily intended for hacking on Hudson itself, we're expecting more people tomorrow when we'll have a good mix of folks hacking on Hudson, folks hacking with Hudson and plain old folks.
Get excited and make things
The day of hackery is upon us! Today is Day One of the Bay Area Hudson hackathon/meetup, the hacking will start at 10am today and continue until 5pm at the Oracle Santa Clara campus in the "library" conference room of SCA7 "Mansion" building. The focus today will be largely on hacking Hudson itself.
Can't attend?Not everybody lives in the Bay Area, fortunately all of you are on the internets! There's two ways you can participate remotely in the hackathon:
- WebEx: Meeting Number: 201 389 367, Password: hudson (audio conference, app sharing, etc)
- IRC As always, there's the #hudson IRC channel on the Freenode where you can participate via text chat
If you're in the Bay Area, but busy at work today, come by for Day Two of the hackathon/meetup tomorrow (Saturday) from 10am to 6pm at Hacker Dojo in Mountain View!
Currently there is only one item on the agenda for Friday:
- Improving Client-Side Code Quality with YUI 3: A Proposal (by: Benjamin Shine)
Image courtesy of blackbeltjones
Update: The WebEx link for today has been corrected.
Links for 2010-03-19
It's been quite a busy week, preparing for the Bay Area Hudson hackathon/meetup which starts today, receiving requests for crazy-awesome Hudson stickers and my day job. Regardless, I've stumbled across a few links to share in this links roll-up.
- John Ferguson Smart discusses some of the gotchas with migrating Hudson build jobs from one server to another
- Learned a bit about how Kim Moir and the Eclipse Foundation are "building better" with Hudson
- dbaktiar gave a quick overview of installing Hudson on Ubuntu Karma Koala
Looking forward even more interesting things to read next week after the hackathon and meetup here in California.
Slaves building robots
A few weeks ago we covered building Android apps with Hudson thanks to a very informative post by Hugo Visser, ever thought about building Android itself with Hudson? Sony Ericsson apparently has, Continuous Blog reader and Hudson user Christopher Orr sent me this screen shot from his recently purchased Sony Ericsson Xperia X10 mini, notice the "Kernel version" field.
If you've got screen shots or photos spotting Hudson out in the big blue room, drop me an email at tyler at linux dot com
Breaking! Hudson 1.351 Released
Rush delivery from Hudson HQ! Hudson 1.351 just rolled out with a very important regression fix:
- Regression in 1.350 that can delete old build artifacts. (mailing list thread, issue 5937)
Sorry for the hiccup everybody, we're working pretty hard on getting a better, more stable, release process in place.
You can go grab the latest .war file straight from hudson-ci.org or if you're using a native package, use your package manager to upgrade.
Hudson 1.350 Released
Finishing off the second week in March, the Hudson team rolled Hudson 1.350 off the assembly line last Friday, bringing a slew of fixes. Of particular interest to users of Hudson's various native packages for Red Hat, openSuSE, Ubuntu/Debian and Solaris, was a change that suppress the "self-upgrade" functionality in the "Manage Hudson" page. On the enhancements side of the fence, the team added authentication support to the Hudson CLI (issue 3796) allowing Hudson users with locked down installations to take advantage of everything the CLI has to offer.
Internal to Hudson, some more changes from Alan Harder (a.k.a mindless, a.k.a The Garbage Man), deprecating or otherwise removing deprecated APIs. Alan's been doing some great work on Hudson's internals, if you're coming out to this weekend's hackathon, but sure to pat him on the back for his tireless efforts.
<!--break-->
- Fix handling of relative paths in alternate settings.xml path for Maven projects. (issue 4693)
- Alternate settings, private repository, profiles, etc were not used in embedded Maven for deploy publisher. (issue 4939)
- Make editableComboBox work in repeatable content, such as a build step.
- If content is captured using <j:set var="..">..content..</j:set>, fixed this to use proper HTML rendering when appropriate.
- '<' and '&' in the console output was not escaped since 1.349 (issue 5852)
- Fixed an AbstractMethodError in SCM polling under some circumstances. (issue 5756)
- Fixed a ClassCastException in the Subversion plugin - now using Subversion plugin 1.13. (issue 5827)
- The Maven Integration plugin link in the Update Center was going to a dead location. (issue 4811)
- On RPM/DEB/etc installation, don't offer the self upgrade. It should be done by the native package manager. (report)
- Fixed a possible lock up of slaves.
- Added advanced option to LogRotator to allow for removing artifacts from old builds without removing the logs, history, etc. (issue 834)
- Authentication support in Hudson CLI. (issue 3796)
- Added console annotation support to SCM polling logs.
The 1.350 release of Hudson contains 54 commits from 6 different contributors,
- abayer
- jglick
- kohsuke
- manuel_carrasco
- mfriedenhagen
- mindless
You can go grab the latest .war file straight from hudson-ci.org or if you're using a native package, use your package manager to upgrade.
Would you like to, OK
As Matt Brown pointed out on the dev@ list, Hudson made a cameo on The Daily WTF in their post Nobulation Fail.
Kohsuke went on to mention on the mailing list:
Looks like this one is already fixed back in October last year.