Copyright 2018 Red Hat, Inc.

This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode

OpenDev Gerrit Hosting

Storyboard: https://storyboard.openstack.org/#!/story/2004627

Migrate review.openstack.org to review.opendev.org.

Problem Description

OpenDev is intended to be the project infrastructure used by open infrastructure projects, no longer limited to OpenStack. To convey that, we need to change the name of the Gerrit server, and accommodate new repository organizational structures.

Proposed Change

Because of the complexity of operating a Gerrit server, OpenDev will provide a single Gerrit server for all supported projects. Whitelabel branding of the service will not be available.

Since Zuul, golang, and other tools operate best with a single canonical name for git repositories, we will also deprecate whitelabel branding of git repository hosting.

The existing review.openstack.org server will be renamed to review.opendev.org.

Plain git hosting will be served from opendev.org. The repository directory structure will be org/project.

For example the canonical name for the nova repository will be “opendev.org/openstack/nova”. Zuul will be “opendev.org/zuul/zuul”.

The URL https://opendev.org/openstack/nova will serve a browseable version of the repository, and can also be used to clone and fetch directly with git.

We will use Gitea for repository browsing. It is a fully-featured GitHub close which nonetheless allows disabling features we don’t use (issues, wiki, pull requests) as well as customizing web pages (so we can configure a custom header, etc. It can support inline RST rendering via pandoc. It is written in Go, and an official container image is provided. We will need to use its API to create repositories in its internal database as part of our new repo creation process. It supports cloning from the browse URL. It has a landing page which we can customize to our needs, as well as a repository exploration feature. It also supports code search across all projects. Once it is up and running, we can retire codesearch.openstack.org (and redirect that URL to opendev.org).

We will not support authentication or any features other than browsing and searching to start, however, we may want to use other features in the future (such as wiki), so we should plan to eventually configure the system to support those.

Example site: https://try.gitea.io/gitea/gitea

Only the HTTP/HTTPS git protocol will be supported, not the native git protocol. HTTP will redirect to HTTPS.

Redirects from git.openstack.org, git.zuul-ci.org, git.starlingx.io will be established and maintained for at least a year.

As part of the initial migration, we will move all Zuul repositories to use the “zuul/” prefix, along with any other similar moves which may be ready. We will offer all projects the option to rename their repositories in the future, as we expect that it will take some time for them to establish policies around how they would like to use their prefixes. For any future project renames, we will establish redirects on opendev.org.

When we perform the move, we will force-merge (bypassing code review and testing) changes to the .gitreview file of every project in the system.

Implementation

Assignee(s)

  • corvus

Gerrit Topic

Use Gerrit topic “opendev-gerrit” for all patches related to this spec.

git-review -t opendev-gerrit

Work Items

  • Remove all git:// protocol references (eg in devstack)
  • Select gitea or gitlist
  • Create gitea/gitlist backend servers running software in containers
  • Create new opendev.org frontend load balancers
  • Configure Gerrit to replicate to opendev servers
  • Configure redirects on backend servers
  • Add review.opendev.org to DNS pointing at review.openstack.org IP addrs
  • During outage:
    • Rename Gerrit server to review.opendev.org
    • Replace openstack logo with opendev logo
    • Update Gerrit apache config to redirect review.openstack.org to review.opendev.org
    • Update DNS to point git.openstack.org, git.starlingx.io, git.zuul-ci.org to opendev.org
    • Rename any projects ready to be renamed as part of the move
    • Force-merge changes

Repositories

We may need new repositories related to operating gitea/gitlist.

Servers

We will briefly have two git farms, but can retire the current git farm at the completion of the migration. We can operate with one or two backends during setup and scale out to a full cluster size during the outage.

DNS Entries

Many DNS changes will happen as described in the work items. Some will be manual changes to the openstack.org zone, most will be in opendev.org which is managed via git. Most DNS entries can be made in advance of the cutover.

Documentation

The new code browsing system should be documented. Instructions for configuring redirects on project renames should be added.

Security

This should not alter the security posture of any of the affected services.

Testing

New services can be tested with testinfra in system-config.

Dependencies

No dependencies.