Jenkins Java

This week we have a Jenkins & Java 10 Online Hackathon. This is an open online event, where we work together on Jenkins core and plugins in order to find and fix compatibility issues, share experiences and have some fun. Everybody is welcome to join, independently of their Jenkins experience and amount of time they have available.

After the kick off on Monday Jenkins contributors have been working on Java 10 and Java 11 support in Jenkins. We have already received contributions from 12 hackathon participants, and the number keeps growing. There are still 3 days ahead, but we have already achieved some important results we want to share.

Jenkins Pipeline

One of our major efforts over last 2 days was to get Jenkins Pipeline working on Java 10+. When the hackathon started Jenkins Pipeline was not working at all, and it was a major blocker for Java support and for exploratory testing in particular. We’ve been working together with Sam van Oort and Devin Nusbaum to fix the libraries in the Jenkins core, Pipeline: Support plugin and Docker packaging.

Just to summarize the result of two days in one screenshot…​

Successful Pipeline on Java 10

Yes, we have got it running! Over two days we have got from the "Pipeline Crashes Immediately" state to the situation when the most of key Pipeline features are operational, including Scripted and Declarative Pipeline, Blue Ocean, shared libraries and dozens of plugins being used in the Jenkins plugin build flow.

There is still a lot of work to do to get the changes finalized, but Jenkins Pipeline is available for testing on Java 10 and 11 now. If you want to try it out, you can use a new jenkins/jenkins-experimental:blueocean-jdk10 image we have created. It bundles all the required patches, so you can just run the following command to get started:

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins-experimental:blueocean-jdk10

If you want to try more complex scenarios, see the Running Jenkins with Java 10 and 11 blogpost and List of Required patches.

What else?

Although Pipeline is the most visible change, there are other ongoing activities:

  • Devin Nusbaum explored plugin startup issues we had with JDK 11ea+17 and confirmed that we need to upgrade our images to JDK 11ea+18

  • Gianpaolo Macario is working on adopting the Java 10 experimental images in his easy-jenkins project

  • Sam van Oort and Devin Nusbaum are working on getting plugin build and test flows when using JDK 10 with Maven

  • Nicolas de Loof is working on cleaning up Illegal reflective access warnings in Jenkins components, using the new Fields micro-library

  • Olivier Lamy and Nicolas de Loof are updating the Animal Sniffer plugin for Maven to make it compatible with Java 9 and above

  • Kohsuke Kawaguchi has released a repackaged version of ASM 6.2 we use in the project

  • Last but not least, Liam Newman and Tracy Miranda helped us a lot to run the meetings and to get this hackathon organized

There are also other contributors working on exploratory testing and reporting defects they discover. See our status doc for the full list.

What’s next?

Tomorrow we will have 2 sessions:

  • At 8AM UTC we will have a sync-up. According to the requests from hackathon paticipants, we will have an intro session to Jenkins development for newcomers

  • At 4PM UTC we will have a meeting with key JDK Project Jigsaw committers

    • Mark Reinhold, Mandy Chung and Paul Sandoz will join us to talk about Java 10/11 adoption

    • YouTube link

We will also post participant links in our Gitter channel 15 minutes before the meetings. If you have any questions, please join the meetings or raise questions in the chat during the call.

Can I still join the hackathon?

Yes, you can! It is possible to hop in and hop off at any time. Just respond to the registration form, join our Gitter channel and start hacking/testing.

We also have a number of newbie-friendly issues you can start from. See our Kick-off session and slides for quick start guidelines.

About the Author
Oleg Nenashev

Jenkins core maintainer and board member, open source software and open hardware advocate, TOC chair in the Continuous Delivery Foundation. Oleg started using Hudson for Hardware/Embedded projects in 2008 and became an active Jenkins contributor in 2012. Nowadays he maintains [Jenkinsfile Runner](https://github.com/jenkinsci/jenkinsfile-runner/), contributes to several Jenkins SIGs and outreach programs (Google Summer of Code, Hacktoberfest) and organizes Jenkins meetups in Switzerland and Russia. Oleg works on open source programs and [Keptn](https://keptn.sh/) at the [Dynatrace](https://dynatrace.com), Open Source Program Office.