Anuket Project
Transformation Roadmap & Process
- Trevor Bramwell
This page details the roadmap and process on how Anuket might transition to Gitlab in 2021.
Overview Presentation
Roadmap
Gitlab Research & Discovery
Initial evaluation by LF IT to determine if Gitlab will meet Anuket's requirement of running jobs on external hardware and can be used to provide similar committer/contributor roles as Gerrit. Initial PoC to explore parallelization option, limits of free resources, and security scanning features (code, dependencies, licenses).
TSC Approval
Recommendation, timeline, and process presented to the TSC for their approval.
Pilot Program
Research and discovery by the Storperf and Kuberef projects to evaluate Gitlab for their needs and the wider community.
Gitlab Entitlement
Applying for and receiving Gitlab Premium through the Gitlab.com open source program.
Training & Documentation
Train projects on the development process, and CI workflow & configuration. "Getting Started" guide for new projects coming in, and reference for existing projects.
EasyCLA Support
Support for Gitlab.com added to EasyCLA, and repositories configured and setup ICLA/CCLA.
CI/CD Job Migration
Convert project jobs from JJB to GitLab-CI and validate deployments using Lab-as-a-service resources. Propose the new .gitlab-ci.yml file back for the project to approve and merge.
User & Hardware Enrollment
Switch hardware over from Jenkins JNLP to GitLab Runner (as projects transition). Enroll users in Gitlab.com and assign them their associated projects/roles.
Gerrit Read-Only & Jenkins Shutdown
Finalization of the migration by ensuring all projects have been set to read-only, description have been updated to point to the new location, and Jenkins & Jenkins Sandbox is shutdown.
Transition Process
- Create a copy of the code in Gitlab under gitlab.com/anuket-transition
- Develop Gitlab-CI, utilizing shared runners and Lab-as-a-Service hardware where needed, and produce a .gitlab-ci.yml file between the projects current CI and Gitlab.
- Propose the .gitlab-ci.yml file for inclusion into the project (the project signs off on the work and merges, the change is not pushed directly to the repository).
For projects at gerrit.opnfv.org, this will be a patchset.
For projects at github.com/cntt-n, this will be a PR. - Create the project under gitlab.com/anuket and configure permission schemes, and DCO.
- Enroll the hardware in Gitlab, while marking the runner as offline so as to not run any jobs.
- Enroll project committers and contributors in Gitlab.
- Train the project on Gitlab processes and Gitlab-CI.
- Mirror the project under gitlab.com/anuket
For projects at github.com/cntt-n this will be an import, and need to be scheduled (see Next step).
For pilot projects, this will be a move from their current location to the new group. - Schedule a time (communicate to contributors in advance) with the project to cut-over development and hardware (This can be schedule for everyone at once, if desired).
- Update the original repository description with a notice that the project has moved, and mark the project as archived (read-only).
- Remove project jobs from previous CI, remove project from gitlab.com/anuket-transition.
Questions & Answers
- Who is doing the work?
- LF IT will be doing the work to convert project's CI from Jenkins to Gitlab, culminating in a patchset/Pull Request/Merge Request of the .gitlab-ci.yml file for the project approve.
- How will it impact my project?
- There should be low impact to project's current work, as the transition will run in parallel until project's are ready to make the transition.
- How do I get support?
- Current support process stays the same. LF IT will interface with Gitlab.
- Who is administrating?
- Initially LF IT, future TBD
- Can you modify changes in the browser?
- Yes, Gitlab.com provides a web IDE.
- Will issues and PRs come over if importing from Github?
- Yes, along with all branches, but we’ll want users enrolled first.
- What does the process look like for Gerrit/Github/Pilots?
- See Transition Process above.
Notable Features
- CODEOWNERS
- Merge Request Approvals
- Merge Request Dependencies
- Merge on CI completion
- Container & Package Registry
- License Compliance
- Dependency Scanning
- Security Scanning
- Static HTML Hosting - Useful for hosting documentation or CI reports.
Table of Contents