Make GitLab CI/CD work with an external repository (GitHub)
Several customers and prospects are interested in having a full CI/CD experience using GitLab CI/CD, but with the code repository hosted on external services, like GitHub or BitBucket.
GitLab CI/CD relies heavily on having the code in a local repo, and cannot be linked to external ones. One possible solution is to cache the external project on GitLab, and run pipelines from here, with status updated back to GitHub/BitBucket via their Status API. It is also useful to make the setup easy for users and provide a good user experience when using a GitLab just for CI/CD.
The first external service to be supported is GitHub.
Minimal viable changes
Second step - feedback to GitHub
- CI/CD-only project setup: #3839
- Pipelines list as project overview: #3840
- Global pipelines list as user homepage: #3841
- Send environment deployment status to GitHub: #3842
- Add GitLab CI/CD to GitHub Marketplace
Configure GitLab CI/CD via project setting instead of
- Disable Repository read/write while still enabling Pipelines