Geo: Self Service Framework - First Implementation for Package File replication
The initial spike is merged https://gitlab.com/gitlab-org/gitlab/issues/197319 and we now need to continue work on the individual issues, which is mainly to ensure tests are up-to-speed and that the tests are well separated. In parallel, we need to update the documentation in https://gitlab.com/gitlab-org/gitlab/issues/196853. All relevant issues will be discussed in the next scheduling call on 2020-02-10 and are already marked as ~"geo::active". Verification work has started via https://gitlab.com/groups/gitlab-org/-/epics/1817 Following this we need to: * Delete package files from secondary when deleted from primary * Backfill registries for existing package files * Sync unsynced and failed package file registries ### Problem to solve <!-- What problem do we solve? --> GitLab can be used as [a repository for some common package managers](https://docs.gitlab.com/ee/user/packages/). Users can build and publish packages. Except for the Docker Registry, all other registries are not currently supported. ### Intended users This is relevant for GitLab customers and users who already have a working Geo setup and/or who are considering enabling Geo for either DR or Geo replication features. ### Further details <!-- Include use cases, benefits, and/or goals (contributes to our vision?) --> Our customers have a reasonable expectation that new data types being made in Geo in a timely manner. This is a step towards adding another data type and it will bring us close to finishing work on [adding all unreplicated data types](https://gitlab.com/groups/gitlab-org/-/epics/893) ### Proposal <!-- How are we going to solve the problem? Try to include the user journey! https://about.gitlab.com/handbook/journeys/#user-journey --> This epic serves two purposes: 1. Provide Geo support for package files 1. Create a first implementation of the Geo self-service framework The implementation should utilize all findings described in https://gitlab.com/gitlab-org/gitlab/issues/35540 ### Permissions and Security <!-- What permissions are required to perform the described actions? Are they consistent with the existing permissions as documented for users, groups, and projects as appropriate? Is the proposed behavior consistent between the UI, API, and other access methods (e.g. email replies)? --> ### Documentation <!-- See the Feature Change Documentation Workflow https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html Add all known Documentation Requirements here, per https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html#documentation-requirements --> In order to make the Geo self-service framework a success we should start writing developer documentation that highlights exactly how to add a new data type. A first iteration should be part of this epic. ### Testing <!-- What risks does this change pose? How might it affect the quality of the product? What additional test coverage or changes to tests will be needed? Will it require cross-browser testing? See the test engineering process for further guidelines: https://about.gitlab.com/handbook/engineering/quality/guidelines/test-engineering/ --> The testing requirements are similar to other data type. ### What does success look like, and how can we measure that? <!-- Define both the success metrics and acceptance criteria. Note that success metrics indicate the desired business outcomes, while acceptance criteria indicate when the solution is working correctly. If there is no way to measure success, link to an issue that will implement a way to measure this. --> * Package files for Maven, Conan, NPM and NuGet should be supported - they can be replicated and verified and the status is shown on the admin UI * Initial version of developer implementation for the self service framework should be written * It should be possible to support any new package file type that is added after this Epic is closed with minimal additional effort (see [this list of suggested new package files](https://docs.gitlab.com/ee/development/packages.html#suggested-contributions)) ### What is the type of buyer? <!-- Which leads to: in which enterprise tier should this feature go? See https://about.gitlab.com/handbook/product/pricing/#four-tiers --> * Ultimate * Premium ### Links / references * https://gitlab.com/groups/gitlab-org/-/epics/2161 * https://docs.gitlab.com/ee/user/packages/
epic