Posts to Continuous Blog

Syndicate content
Updated: 35 weeks 21 hours ago

Hudson 1.355 Released

April 24, 2010 - 4:25am

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

  • Colored ball image at top of build pages was broken for Hudson in some web containers (fixed by removing workaround for a Firefox bug fixed since 3.0.5/Dec2008). (issue 2341)
  • Console page while build is running did not wrap lines when viewed in IE. (issue 5869)
  • Fixed build history to indicate test failure for MavenBuild and MavenModuleSetBuild.
  • Make dropdownList work in repeatable content, such as a build step.
  • Fixed a bug where a job created via XML didn't properly receive upstream/downstream computation. (report)
  • Argument masking wasn't working correctly for commands run on slaves (report)

    Enhancements
    • 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

    April 16, 2010 - 11:15am

    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

    April 16, 2010 - 4:45am

    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.


    Contributors

    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

    April 12, 2010 - 5:00am

    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.

    For example:

    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

    April 7, 2010 - 5:25am

    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

    April 1, 2010 - 5:50am

    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

    April 1, 2010 - 4:15am

    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)

    March 31, 2010 - 5:45am

    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

    March 31, 2010 - 4:20am

    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.


    Bugs fixed
    • 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)
    Enhancements
    • 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

    March 30, 2010 - 4:35am

    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

    March 27, 2010 - 4:45am

    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

    March 23, 2010 - 5:00am

    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.

    Hudson 1.352 Released

    March 22, 2010 - 5:15am

    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.


    Enhancements
    • 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-->

    Contributors

    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

    March 19, 2010 - 6:07pm

    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

    March 19, 2010 - 6:15am

    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:

    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!


    Friday Agenda

    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

    March 19, 2010 - 4:40am

    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.

    Looking forward even more interesting things to read next week after the hackathon and meetup here in California.

    Slaves building robots

    March 16, 2010 - 5:45am

    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

    March 15, 2010 - 12:42pm

    Rush delivery from Hudson HQ! Hudson 1.351 just rolled out with a very important regression fix:

    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

    March 15, 2010 - 5:15am

    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-->

    Bug fixes
    • 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.


    Enhancements
    • 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.


    Contributors

    The 1.350 release of Hudson contains 54 commits from 6 different contributors,

    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

    March 14, 2010 - 4:30am

    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.