The first stop of Jenkins User Conference world tour this year was Paris, where there’s a considerable concentration of Jenkins developers and users (sometimes those of us on the other side of the Atlantic call them “the French gang”). The event was held a day before Devoxx France, in the hope that we would attract more attendance.
I believe there are 100+ people that actually showed up, and we had a full day divided into two tracks, talking about all things Jenkins. While many were French, some of the attendees came from all over Europe. I was able to see some familiar faces, as well as those who I’ve only known by their names.
I tried to get in and out of both tracks to get a sense of what was going on, so that I could report out later, and here’s my notes.
I kicked off the whole day with a keynote, looking back at what we’ve done since we became Jenkins. I’ve looked into various activities in the community, such as LTS, Jenkins CIA, Ruby plugin development, and UI enhancements. I updated my adoption statistics slides (we are happy to report that we crossed 40K installations in our tracking!), and reported that JFrog is now hosting our repositories that we rely on for development. I showed some of what we’ve been working on lately at CloudBees — such as the upcoming version of Jenkins Enterprise by CloudBees that supports high-availability, our giving away the Folder plugin for free (as in beer), and previews of some not quite public yet features, which is a treat only for those who came!
In the first slot, Gregory Boissinot went through a plugin development workshop. This was actually something I really wanted to understand, so that I get the objective view on where the pitfalls are. Even though the talk was in French, I did understand the code he was showing, and I took some notes about having some kind of skeleton code generator — for example, there’s a common pattern for building an UI bound model object (for asking the user to enter data that has structures, persisting them, and so on), and having a code generator command line tool (like jenkins.rb has) could be really handy.
In another room, Nicolas and Mathieu were showing their “Build Flow” plugin, which lets you write a workflow in Groovy DSL. Choreographing a complex workflow that involves multiple jobs is a common challenge among many Jenkins users, and so this talk was well attended, and I’m really looking forward to seeing this plugin mature (there’s a separate effort to integrate BPMN workflow into Jenkins, see more about that here.) One thing I learned about Groovy DSL since then is the AST transformation. I’m thinking it might allow us to convert the DSL workflow script into a continuation passing style so that you can suspend/resume workflow at arbitrary point.
The day was so packed that we didn’t even waste the lunch time! While attendees were eating, we had lightening talks in the room. Olivier showed off how Apache runs Jenkins, which is quite sizable, then I pitched in for Domonik, who couldn’t make it to the conference, and covered the Scriptler plugin. Vincent followed and covered the similar Groovy system console. Harpreet then closed off the lunch lightening talks by showing the templates plugin in Jenkins Enterprise by CloudBees.
In the afternoon, Arnaud, one of our French gang, showed how you can set up iOS development on Jenkins (from code change to test, to the delivery of the binaries to actual phones). Bruno then did a demo of how he uses DEV@cloud and RUN@cloud to quickly set up continuous deployment for Java webapps. For system integraters that deal with lots of projects, I think it is a great combination (for example, allowing you to hand over the entire development environment to the customer when the project is over).
While all that was going on in one room, in another room Lars Kruse showed off how the old meets the new — where you take ClearCase UCM and use it to do validated merge, in which only the changes tested by Jenkins become visible to the rest of the team. I personally don’t know much about ClearCase, but it was very interesting that emerging techniques like validated merge can be applied on more traditional SCM tools. He also said his company works with clients to develop custom Jenkins plugins. I always felt that any big company adopting Jenkins need some custom glue plugins, and I regularly come across those companies, but CloudBees can only help so many. It’s great to see that there are more help available now!
The talk that followed was from Julien Carsique from Nuxeo, discussing how he manages and improves the CI environment for his organization. Now, I regret I didn’t take all the notes about details, but I think this was one of the best presentations of the day for me. I remember thinking that if we had the best Jenkins administrator award for those who push things to the limit and beyond, he would be my top pick. IIRC, he had a major project with multiple Maven modules that span across different repos and all. He set up Jenkins such that any change triggers a cascade of new builds of downstream jobs, which later then fan out to cross-platform test jobs, then he made the whole thing visual so you can track exactly where time is spent and how those changes propagate. I think this was very inspirational to many other fellow Jenkins users, and I hope he will put his slides somewhere so that other people can mimic what he’s done.
Back to the big room, my fellow colleagues Stephen and Harpreet did the only introductory talk in the whole day, going through check lists of production Jenkins deployments, recapping why you want CI, etc. (And I always forget that there are still many who don’t know much about Jenkins!)
It was also great to see and hear Sebastian Bergmann, the guy behind Jenkins PHP, talk about Jenkins and PHP integrations. I wish we had more of those people who bridge our community to different communities and help us spread the ideas. He even kindly gave me his Jenkins/PHP book and signed it for me!
Aside from talks, food was great, especially for those of us who came from the U.S.
I’ve got some good inspirations about where we need to work. And I also managed to implement the search filter in the update center during the day, in response to the valid complaint from Sebastian. For virtual communities like ours, it’s really good to meet people in the meeting space and put faces to names. Build automation engineers are often somewhat lonely in their respective organizations — there just aren’t that many people who get excited about automating things away, and so having so many of like-minded folks in one room was by itself a great experience.
On the things to improve side, I felt that workshops was tricky to do in a limited time and in a big room. Maybe it would work out better if there’s a smaller room where a smaller number of people can gather and hack away (probably some time slots designated for some specific topics), then we can collectively merge pending important pull requests, teaching how to develop plugins, or ask others to look at their plugins, etc. There also can be a valid discussion about JUC, run nicely in exchange for an admission fee, vs. JUC run cheaply but free.
In any case, I think the quality of presentations were very good, and knowing local Jenkins developers/users will help expand your horizons. As I said in the beginning, we are taking JUC around the world this year. The one in New York is already coming up next week (May 17), followed by Herzelia (Israel - July 5 (July 29), San Francisco (September 30) and Antwerp (November 13).
Please register while seats are still available (and the cost is even lower during the Early Bird registration period)!