Note |
---|
This information is being revised and should be updated by |
This page details the roadmap and process on how Anuket might transition to Gitlab in 2021.
Table of Contents |
---|
Roadmap
...
Gitlab Research & Discovery
...
Create a PoC for running CI in GitLab to validate external hardware and investigate features and functionality.
...
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
GitLab Policy and Secrets
Research into best practices for configuring GitLab to match current project structure and committer rights, implementation of those best practices, and enrollment of secrets/credentials for external services (Dockerhub, etc.).
GitLab Group Enrollment
Setup project groups and invite members to respective teams
Documentation
Document development process, CI, and project configurations - Documents needed for "Training for GitLab-CI"
Git Migration
Configure continuous mirroring of Gerrit to GitLab to make code available while development is still happening in Gerrit
Q4
...
.
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.
CI/CD Job Migration
Convert project jobs from JJB to GitLab-CI and validate deployments using Lab-as-a-service resources
Governance & Management Job Conversion
Convert self release and INFO.yaml file jobs to GitLab-CI
EasyCLA Support
EasyCLA support for GitLab is planned for Q4 of 2020. See this ticket for tracking updates.
. 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).
Training for Gitlab & GitLab-CI
Train the community on the new CI language, development and review process.
Transition from Jenkins to Gitlab-CI
Final commit in Gerrit of 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
...
Process
- Create proof-of-concept (PoC) organization in GitLab
- While development is still happening on Gerrit:
- Import the project to the PoC organization
- Scope out the CI requirements and resources
- Develop CI by utilizing Lab-as-a-Service resources for virtual and hardware deployments
- Determine cutover time/date once CI verified (for each project)
- Merge new CI configuration in Gerrit
- Enroll and configure hardware resources
- Ensure all Gerrit changes are closed
- Disable replication on Gerrit
- Set project as "read-only"
- Remove PoC organization
- Shut down Gerrit & Jenkinsfile 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.