The popular open source continuous integration server, Hudson, forked a few months ago. Its creator, Kohsuke Kawaguchi, along with a larger part of the open source community forked Hudson and created Jenkins. As for Hudson, it is now under the Oracle and Sonatype umbrella.
In the meantime, we at Centrum Systems were writing the build pipeline plugin. Not wanting to take sides, we decided to release the plugin to both Hudson and Jenkins. Having released version 1.0.0 of the plugin and receiving a lot of positive and constructive feedback, we wanted to correct some problems with the plugin, while adding some requested features. I’ll try and summarize our experience of releasing the plugin to either platform.
- Publish the plugin using the same mechanism we used to publish 1.0.0
- Realize the old process changed since the plugin was deployed to the same repository but it would not appear in Hudson’s update center
- Read the new release process and comply to it
- Create a JIRA user
- Miss a few points and ask Oracle for some help
- Create a JIRA ticket expressing our willingness to publish the plugin
- Wait for someone to address the ticket and give us rights to publish to the staging repository
- Change the build to ensure the artifacts were signed as per the following instructions
- Publish the plugin using release:prepare, release:perform (and the corresponding deployment management configuration as described in step 3)
- Log on to Sonatype’s Nexus instance and “close” the deployment (some verifications were performed on the plugin)
- The verification failed and I needed to publish our public key to a keys server (actually, the error message was really clear and helpful)
- “Release” our plugin within Sonatype’s Nexus workflow (a single click, similar to step 10)
- Comment on the original JIRA ticket to ask them to release the plugin for real (to the maven 2 repo)
- Wait a while for the JSON file listing all Hudson plugins to be updated and show the availability of a new version
Elapsed time: About 6 working days
- Publish the plugin using the same mechanism we used to publish 1.0.0 (create an account, add the distribution management information in the pom file, update the settings.xml file with the server information)
- Wait a few hours for the JSON file listing all Jenkins plugins to be updated and show the availability of a new version
Elapsed time: A few hours
I can certainly appreciate the steps to sign the plugin and the extra validations ensuring the plugin has all the right elements, but the Hudson process felt a bit heavy. Hopefully the next release will not be as tedious since we learned quite a bit during the exercise. Finally, I would like to thank Winston from Oracle since he was helpful and responsive and all other people involved in the process. I would also like to thank the Jenkins people since the publishing process was nice, streamlined and uneventful (in a good way).
The fact that Jenkins has had 11 new versions whilst Hudson has had only 2 since the fork is indicative of the different approaches.