How we're improving migrations from Jenkins to GitLab CI/CD

Chrissie Buchanan ·
Dec 8, 2020 · 3 min read

Teams that want to migrate from Jenkins to GitLab CI/CD can run into roadblocks in the migration process. After all, going from a complicated plugin environment to GitLab CI/CD isn't exactly an apples to apples comparison. Teams that want to make the switch to GitLab will need help to ease the transition – so what are we doing to make that transition easier?

We created a Jenkins Importer category direction to bring together documentation and issues around improving the Jenkins migration process. We'll go over a few of the projects that are in progress and our vision for the future of Jenkins migrations.

What is the Jenkins Importer category?

The Jenkins Importer category is a collection of tools and documentation to help teams migrate from their Jenkins environment to GitLab CI/CD as easily as possible. Since we're a company that works public by default, we use these category direction pages for information related to upcoming products, features, and functionality, not necessarily for purchasing or planning purposes.

Ultimately, our goal is to make at least 80% of the automated tasks easy. Having a Jenkins Importer category helps us organize issues and epics around helping unblock teams from migrating to GitLab CI/CD. This category is currently at a "minimal" level of maturity, meaning the features might be available in the product but are not necessarily in production yet.

With our work being public, you can see our progress and make contributions or comments on these issues.

Jenkins Importer: Top priority

Our main epic is about implementing a wrapper around the Jenkinsfile Runner. A wrapper is all about creating a minimum viable change (MVC) that will enable teams to run their Jenkins stack within GitLab while they complete their migration.

Converting a complicated Jenkins enterprise environment into GitLab can be especially complex. For some Jenkins users, they may have thousands of pipelines that need to be converted. The idea of a wrapper came from a comment on a different issue around improving our Jenkins migration documentation. This process can be used to run Jenkins builds in GitLab CI while migrating Jenkinsfiles to the GitLab CI/CD syntax.

Migrating from Jenkins: Other works in progress

As we continue to receive feedback from the community and conduct research on use cases, those findings will impact the maturity of this category. While we're focusing on a wrapper because it will have the most initial value, we have other vision items for the Jenkins Importer category as well, which are summarized below.

Importer for declarative and imperative Jenkins configuration

This first issue is a proposal to write a tool that can read the newer declarative or imperative syntax (as opposed to JenkinsFiles, a Groovy DSL) and convert it to a valid .gitlab-ci.yml file.

Importer for scripted Jenkins configuration

This second issue is a proposal for a translator that can turn scripted Jenkinsfiles written in Groovy into a YAML syntax.

At GitLab, everyone can contribute. If this category interests you and you'd like to know how we're making migrations easier, feel free to comment on the public issues. If you're interested in helping GitLab test the Jenkins wrapper, join our public testing issue for instructions and to provide your feedback.

Learn more about the benefits of single application CI/CD and see how GitLab and Jenkins compare head-to-head.

Cover image by Kenrick Mills on Unsplash

“How GitLab is making migrations from Jenkins to GitLab CI better” – Chrissie Buchanan

Click to tweet

Free eBook: The benefits of single application CI/CD

Download the ebook to learn how you can utilize CI/CD without the costly integrations or plug-in maintenance.

Learn more
Edit this page View source