--- title: "Migrating from Jenkins" author: Chrissie Buchanan author_gitlab: cbuchanan author_twitter: gitlab categories: insights image_title: '/images/blogimages/jenkins-migration.jpg' description: "Best practices for making the switch to GitLab CI/CD." tags: CI/CD, DevOps ee_cta: true twitter_text: "Making a Jenkins to GitLab migration easier" featured: yes # reviewer should set postType: content marketing merch_banner_destination_url: "/resources/ebook-single-app-cicd" merch_banner_image_source: "/images/merchandising-content/benefits-of-single-app-cicd.jpg" merch_banner_body_title: "Free eBook: The benefits of single application CI/CD" merch_banner_body_content: "Download the ebook to learn how you can utilize CI/CD without the costly integrations or plug-in maintenance." merch_banner_cta_text: "Learn more" merch_sidebar_destination_url: "/resources/ebook-single-app-cicd/" merch_sidebar_image_source: "/images/merchandising-content/benefits-of-single-app-cicd.jpg" merch_sidebar_body_title: "Single application CI/CD" merch_sidebar_body_content: "How to reduce costly integrations and plug-in maintenance." merch_sidebar_cta_text: "Learn more" --- Migrations feel daunting, which is one of the reasons teams put them off as long as possible. Even when tools are brittle or not working as they should, it’s the fear of the unknown that keeps us from making the plunge. Teams might have found workarounds to solve common problems but those only work... until they don’t work. If you know that you need to make a tool change or migration, it’s much better to do it early rather than during a crisis. Migrations don’t have to be scary. If you’re tired of brittle builds and endless plugin maintenance, migrating your CI/CD doesn’t have to be a headache. Several teams have [made the switch from Jenkins CI to GitLab CI/CD](/blog/2019/04/25/5-teams-that-made-the-switch-to-gitlab-ci-cd/), and there are resources available to ease the transition. ## From Jenkins to GitLab using Docker The team at [Linagora](/blog/2017/07/27/docker-my-precious/) loved that GitLab includes Git repository management, issue tracking, code review, an IDE, activity streams, wikis, and built-in CI/CD to test, build, and deploy code. In order to take advantage of these all-in-one features, they needed to find a way to switch over from Jenkins CI. Luckily, GitLab’s Docker support and [documentation](https://docs.gitlab.com/ee/ci/docker/using_docker_images.html) allowed them to utilize custom Docker images, spin up services as part of testing, build new Docker images, and run on Kubernetes. ### Running Jenkinsfiles in GitLab CI/CD One short-term solution teams can use when migrating from Jenkins to GitLab CI/CD is [using Docker to run a Jenkinsfile in GitLab CI/CD](https://lackastack.gitlab.io/website/posts/gitlabci-jenkinsfile/) while the syntax is being updated. While this doesn’t address the endless [plugin dependencies](/blog/2019/09/27/plugin-instability/), it’s a stop-gap measure that can get your team working in GitLab until the migration is complete. <%= partial "includes/blog/blog-merch-sidebar" %> ## Using Auto DevOps [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/index.html) can potentially be used to build, test, and deploy your applications with little to no configuration needed at all. One of the more time-consuming tasks during a Jenkins migration can be converting the pipelines from Groovy to YAML, but Auto DevOps provides predefined CI/CD configurations – just push your code and Auto DevOps can build a default pipeline. Auto DevOps offers more features including security testing, performance testing, and code quality testing. If you need [advanced customizations](https://docs.gitlab.com/ee/topics/autodevops/index.html#customizing), you can modify the templates without having to start over on a completely different platform. GitLab senior solutions manager [Brendan O’Leary](/company/team/#brendan) provided a brief overview of how to convert a Jenkins pipeline built with Maven into a GitLab CI/CD pipeline using Auto DevOps.
## Advice from teams that made the switch At our [GitLab Commit](/events/commit/london/) event in London, the team at adSoul, a Germany-based marketing automation company, discussed [their own transition from Jenkins to GitLab](/blog/2019/11/05/adsoul-devops-transition-to-gitlab-ci/). They offered insight into their migration process, but for others considering GitLab CI/CD, here are some best practices: ### Start small In the spirit of iteration, it’s better to make incremental changes than try to tackle everything all at once. Even if it’s just small projects, or just running a Jenkinsfile in the meantime, be patient and aim for steady progress ### Utilize tools effectively With Docker and Auto DevOps, you have the tools available to ease the transition so you’re not reinventing the wheel. ### Communicate clearly Keep teams informed of the process and communicate any changes. This can also apply to the naming of your new pipelines. Aim for clear job names, style your config for a better overview, and write comments for variables and hard-to-understand code. For more information, check out our [migrating from Jenkins documentation](https://docs.gitlab.com/ee/ci/jenkins/index.html). Cover image by [Aryan Singh](https://unsplash.com/@wuzclicks?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/@wuzclicks?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText). {: .note} <%= partial "includes/blog/blog-merch-banner" %>