No regrets! 11 years with Jenkins

Recently I gave a talk to a large group of IT engineers at my company, describing a recent effort to migrate a set of ‘aging’ Jenkins (2.222.1) servers (Windows 2008) used for integrating life and data science workflows (lovingly referred to as jLifeSCI or Jenkins Life Science Continuous Integration). The migration was rather complex involving a new OS (Windows 2019), a recent LTS version of Jenkins (2.361.4) , new versions of statistical/machine learning (R and Python) and imaging tools and almost 100 jobs of differing complexity executing data analysis and processing. In addition, the migration involved about 2TB of actual computational analysis results linked by upstream downstream build relationships.

I’m not going into too many details here, but at the end of the talk a young engineer asked me whether after having described a set of migration project challenges (that I did resolve), I had regrets and second thoughts about sticking with Jenkins all these years. Would I be better off migrating to a different automation server platform?

That was a good question, and rather fair. If you have not taken the time to think deeply how Jenkins is solving problems ‘out of, and outside the box’ why would you stick with a system that has been around for more than 15 years and requires Java(!) for its maintenance? Most people read and hear about the latest cool technologies and AI triumphs. How can they get excited about Jenkins?

Wel, the view in the back mirror for me has been one of continuous learning with Jenkins and witnessing the significant contributions it has made in my field of life and data science. The view ahead is still fun and exciting as I see several of my data science colleagues looking for ways to deploy jLifeSCI workflows and applications. So naturally, my answer to my colleague engineer was… ‘No regrets’!

A great big THANK you to all of you that make Jenkins (the software) AND the community possible!


Hello Ioannis,

I appreciate your valuable testimony and the insights you’ve shared regarding your Jenkins journey. It’s always interesting to hear from users like you who have faced and overcome complex migration challenges.

Your perspective on the continuous learning and contributions Jenkins has brought to your field of life and data science is truly commendable. It’s a testament to the enduring value of this platform.

I want to extend a sincere “Thank you” for taking the time to share your experiences. Your input is valuable and contributes to the Jenkins community’s growth.


1 Like

Excellent post @imoutsatsos!

I’m facing a similar challenge, and I run into a similar existential crisis, lol. Is it worth staying on Jenkins? It is, but following best practices during the refresh is critical to building a maintainable future platform for my team.

I would love to hear the detailed talk you gave or at least learn more details about your journey! I’m sure its something a lot of folks can relate to.

1 Like

Thank you @zspec!

I totally agree with you that adhering to best practices is important and eases the path for future maintenance and migration of Jenkins installations.

My use case might be a bit different than most typical DevOps/CI/CD installations of Jenkins as we have dug deep into the automation server capabilities for executing analytics (read R, Python algorithms), HPC image analysis with CellProfiler and Deep Learning algorithms, managing laboratory data (ETL, DB loading etc.), monitoring the performance of laboratory robotics and more such life/data science tasks. You can read some of this here Novartis/Jenkins-LSCI: Jenkins for Life Science Continuous Integration ( as well as in the original scientific literature when we published a paper back in 2016 Jenkins-CI, an Open-Source Continuous Integration System, as a Scientific Data and Image-Processing Platform - Ioannis K. Moutsatsos, Imtiaz Hossain, Claudia Agarinis, Fred Harbinski, Yann Abraham, Luc Dobler, Xian Zhang, Christopher J. Wilson, Jeremy L. Jenkins, Nicholas Holway, John Tallarico, Christian N. Parker, 2017 (

Nonetheless, the main migration issues I had to overcome were the ‘security hardening’ of Jenkins that made the integration and interaction of so many external tools a challenge, coupled with the advances in security applied to my own company’s internal systems (read use of CyberArk/Conjure plugin for Jenkins).

The second issue I faced was upgrading legacy use of HTML in parameter descriptions (which is now severely curtailed) The majority of the jobs that we are using are ‘freestyle jobs’, designed for end-user scientists. As such, they require interactive and more functional web-interfaces for entering analysis parameters, and providing feedback to the analysts when certain parameters are selected. I overcame this issue with more Active Choices parameters. Probably ~80% of the parameters used in jLifeSCI jobs are Active Choice parameters since they not only provide interactivity, but can also be rendered as rich HTML/Javascript controls.

The third issue I faced was the deprecation and poor maintenance of certain Jenkins plugins that made them incompatible with recent LTS versions of Jenkins. In most cases I was able to find a replacement plugin(Publish Over SSH plugin for SSH plugin), but in the end, this remains an ‘imminent danger’ with every successive release of Jenkins. There are several ‘orphaned’ plugins that are still providing key functionality to our workflows. (such an example is the ‘Associated Files’ plugin that we use to maintain links between Jenkins builds and large artifacts (such as image sets of several 100Gbs) on our HPC cluster storage.

Finally, my unique situation prevents us from deleting most job builds (as they represent archival artifacts of laboratory analyses that generate scientific hypotheses and follow up actions) The migration included at least 2Tb of analytical data (read build artifacts) that needed to be restored relationally in the upgraded Jenkins installation. I developed custom Groovy and PowerShell scripts that used the in-memory Jenkins object model to discover the linked data (inputs of an analysis are usually the artifacts of an upstream job) and copy them to the new servers.

Although I can’t post my presentation without legal approval from my company, I hope that this summary gives you, and other fellow developers (or data scientists) an idea of the challenges involved and workaround to overcome them.

I must say that having on boarded a Jenkins LTS that included most of the UI and security updates (since v2.222.1), I feel that future upgrades will be a lot easier. Finally, I can’t overstate the contribution of the Jenkins community during this migration. I got much valuable input by posting and discussing some of these challenges on this forum and my longtime collaborator and contributor on the Active Choices plugin @kinow


Kudos for the great testimony. I started with Hudson, and have very fond memories of that time. It is been a pleasure to learn while working with you, Ioannis!