Import CI/CD configuration from external services
Description
One of the blockers that people have while trying to move to GitLab CI/CD is the long and painful process to migrate all their jobs to a new system. Most of the time they are corporate users that spent years in understanding and defining how to correctly configure their CI/CD tool (e.g.: Jenkins), and the idea to start from scratch makes them give up.
We offer the ability to use GitLab as VCS, but they continue to rely on external tools using integrations.
Proposal
As we have an easy way to import new source code into a GitLab project from other tools, we should try to do the same with other CI/CD products, in order to make the transition simpler and increase the adoption of our CI/CD.
It can be done in different ways: since we already have some integration with external services, we can leverage this to "import settings" and create a .gitlab-ci.yml
that is equivalent to the external one. Or we can allow to specify a URL or upload/paste a file in the UI to retrieve the original configuration.
This requires specific support for each system we want to support, as there is no common format to exchange this data: some systems have files in repo, others have configuration in the UI (and maybe API), and others have both.
Even if we will not be able to fully replicate the original behavior, and the pipeline will not run as expected (or doesn't run at all), giving a non-empty starting point to work on could be enough. Users can see which is the approach, and easily fix the file instead of starting from scratch.
Probably the first products to be supported should be:
- Jenkins
- Travis CI
But more are out there.
Links / references
- I2P Onboarding/adoption: gitlab-ce#32638
Documentation blurb
Overview
What is it? Why should someone use this feature? What is the underlying (business) problem? How do you use this feature?
Use cases
Who is this for? Provide one or more use cases.
Feature checklist
Make sure these are completed before closing the issue, with a link to the relevant commit.
-
Feature assurance -
Documentation -
Added to features.yml