Deprecating non-Java plugins

Over the years though, the experiments are no longer being maintained and the plugins that use the non-Java runtimes take a lot of compatibility effort. In addition, the Jenkins ruby runtime does not support Java 11. Specifically, the last few years have been really hard on the Jenkins core developers, as they still have to maintain all the hacks and processes to keep the non-Java runtimes barely working. Examples of the experienced issues include compatibility with JEP-200: Switch Remoting/XStream blocklist to a permitlist where we had to allow many Ruby Runtime classes in the Jenkins core to support serialization of data.

In 2018 we discussed the future of the Ruby Runtime based plugins. There was a consensus that we want to deprecate and remove the plugins so that Jenkins users do not experience issues . Daniel Beck created JEP-7: Deprecation of ruby-runtime for that. Over the years, the functionality provided by Ruby plugins has been largely replaced by other implementations, and hence we have decided to proceed with the deprecation (discussion).

What does this mean for you?

If you are one of the few users who are using the following plugins, there will be no impact on your existing instances. The only change will come for new installs. Suspended plugins will stay installed, but can not be newly installed without manually downloading releases or using custom update centers.

The lists below provide additional information about the plugins based on the Ruby Runtime and the Python Runtime. Please plan your transition away from these plugins. They will be removed from the official Jenkins update centers on January 22, 2022.

Affected plugins

Gitlab Hook Last released 6 years ago. Contains multiple security vulnerabilties. Suggestion: Use the GitLab plugin and the GitLab Branch Source plugin. Cucumber Last released 9 years ago. Suggestion: Use sh or bat to run cucumber from the command line. pyenv Last released 7 years ago. Suggestion: Use sh or bat to run pyenv from the command line. Rvm Last released 5 years ago. Suggestion: Use sh or bat to run rvm from the command line. Capitomcat Last released 7 years ago. Suggestion: Install Ruby and Capistrano and use sh or bat to invoke them from the command line. Commit Message Trigger Last released 7 years ago. Suggestion: Use sh, bat, or other scripts to read git commit messages and conditionally execute Pipeline steps. Git notes Last released 10 years ago. Suggestion: Use sh, bat, or other scripts to run git to annotate commits. rbenv Last released 6 years ago. Suggestion: Use sh or bat to run rbenv from the command line. Chef Last released 6 years ago. Suggestion: Use sh or bat to run chef from the command line. CI Skip Last released 8 years ago. Suggestion: Use the GitHub Commit Skip SCM Behaviour, Bitbucket Commit Skip SCM Behaviour, or SCM Skip to skip builds based on the content of commit messages. Alternately, use sh, bat, or other scripts to read git commit messages and conditionally execute Pipeline steps. InstallShield Last released 8 years ago. Suggestion: Use sh, bat, or other scripts to run InstallShield. MySQL Job Databases Last released 7 years ago. Suggestion: Use Jenkins Job Database Manager Plugin for MySQL. Pathignore Last released 10 years ago. Suggestion: Use the path ignore features of various plugins or use sh, bat, or other scripts to read git commit messages and conditionally execute Pipeline steps. Perl Last released 9 years ago. Suggestion: Use sh or bat to run perl from the command line. pry Last released 10 years ago. Suggestion: Use the Jenkins groovy console and its interface from the Jenkins command line interface. Single Use Agent Last released 7 years ago. Suggestion: Use cloud agents (Fargate, Azure Container Instances, Docker, etc.) to allocate agents for a single use and then release them. Travis YML Last released 5 years ago. Suggestion: Rewrite the travis.yml file as a Jenkinsfile, a Jenkins Templating Engine file, a Pipeline as YAML, or a Jenkins Modular Pipeline Library. Yammer Last released 8 years ago. Suggestion: Use the Yammer REST API to post messages. DevStack Last released 9 years ago. Ikachan Last released 10 years ago. Jenkinspider Last released 7 years ago. Perl Smoke Test Last released 7 years ago. buddycloud Last released 8 years ago.

Acknowledgements

We would like to thank all contributors and maintainers who contributed to the Ruby Runtime based plugins and the Python Runtime based plugin. We also thank those who participated in development of new plugins replacing the functionality. These contributors helped millions of Jenkins users while the ecosystem was supported over the past 10 years and it is not taken for granted. Now we need to move on so that we can keep expanding the Jenkins architecture and developers tools. We invite all contributors to participate in this effort and to help us to migrate the plugins to supported JVM-based platforms for plugins.

My instance is affected, what to do next?

If you do not use the affected plugins, the recommendation is to remove them. Otherwise, it is recommended to start migration out of the plugins to alternatives providing similar functionality.

Not all plugins have alternatives. At the moment the Jenkins core team does not plan to provide a replacement, but any contributions are welcome. If you depend on the functionality, we recommend reaching out to the community in the developer mailing list so that you can coordinate the replacement with other affected users.

Gavin Mogan I got started with Jenkins early on when I was just getting started with testing. I knew there had to be a way to run the tests automatically and report on them back to people. I started hacking my own tools before I came across Jenkins (then Hudson) and was hooked ever since. Over the years I’ve managed to install and configure Jenkins at various jobs, and even was employed making internal and external plugins and integrations. You’ll often find me on the Jenkins IRC and Gitter channels as well as the subreddit giving a hand to people who are stuck. I also try to get involved with Jenkins Infrastructure projects as much as I can. I currently maintain the plugin site, plugin site API, Jenkins Wiki exporter, and a bunch of other minor projects. I also help run Vancouver’s chapter of Nodeschool.
Discuss

This is a companion discussion topic for the original entry at https://www.jenkins.io/blog/2021/12/22/deprecated-ruby-runtime/
1 Like

Might want to reformat that list - the way it is now, it’s rather hard to spot plugins you might be using. (On mobile at least - haven’t tried desktop yet.)

List looks fine on the blog; just the above companion post seems linear.

The Discourse presentation of a definition list is not great. The definition list is nice for the blog post because it has a concept of a term and the definition of the term.