Initial State:
- A GitLab instance with many projects;
- GitLab projects have pipelines that depend on many binaries, including Docker images
- All these binaries and images exist in a local OSS instance of Nexus (NXRM3) in hosted or group repos of various formats (docker, maven, raw, and so on) or remote repos proxied by the repos in this Nexus.
Target State:
- Content of the GitLab and Nexus is transferred into a GitLab in a way that allows the pipelines to run after trivial modifications, like changing URLs from Nexus to GitLab binary registries.
Challenge:
- What approach to automate that could be more effective (less coding, testing, etc.) than a custom app/script that uses Nexus REST API to "walk" through Nexus, create a corresponding registry in GitLab (using the GitLab API), pull all artifacts from the Nexus repo and then push them into the created GitLab registry?
NOTE:
- Properly mapping Nexus repo type to GitLab is a separate challenge.
- Properly reproducing Nexus repo taxonomy in GitLab is a separate challenge.
- Properly transfer Nexus repo permissions to GitLab is a separate challenge.