diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-08 21:11:30 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-08 21:11:30 +0300 |
commit | 2308cd50203f5b377e4d6e03d017066507beacdf (patch) | |
tree | 651b3412094cb4b7af37c22f66974cac33fb2171 /doc/development | |
parent | a34d7fd9a723d6cc9c7348be2afe522bdc2be67f (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc/development')
-rw-r--r-- | doc/development/development_processes.md | 44 | ||||
-rw-r--r-- | doc/development/documentation/workflow.md | 7 | ||||
-rw-r--r-- | doc/development/internal_analytics/index.md | 7 | ||||
-rw-r--r-- | doc/development/repository_storage_moves/index.md | 102 |
4 files changed, 127 insertions, 33 deletions
diff --git a/doc/development/development_processes.md b/doc/development/development_processes.md index 5efcdd90df4..fa2beab52f6 100644 --- a/doc/development/development_processes.md +++ b/doc/development/development_processes.md @@ -1,7 +1,7 @@ --- stage: none group: unassigned -info: "See the Technical Writers assigned to Development Guidelines: https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-development-guidelines" +info: Any user with at least the Maintainer role can merge updates to this content. For details, see https://docs.gitlab.com/ee/development/development_processes.html#development-guidelines-review. --- # Development processes @@ -35,32 +35,12 @@ Complementary reads: ### Development guidelines review -When you submit a change to the GitLab development guidelines, who -you ask for reviews depends on the level of change. +For changes to development guidelines, request review and approval from an experienced GitLab Team Member. -#### Wording, style, or link changes - -Not all changes require extensive review. For example, MRs that don't change the -content's meaning or function can be reviewed, approved, and merged by any -maintainer or Technical Writer. These can include: - -- Typo fixes. -- Clarifying links, such as to external programming language documentation. -- Changes to comply with the [Documentation Style Guide](documentation/index.md) - that don't change the intent of the documentation page. - -#### Specific changes - -If the MR proposes changes that are limited to a particular stage, group, or team, -request a review and approval from an experienced GitLab Team Member in that -group. For example, if you're documenting a new internal API used exclusively by +For example, if you're documenting a new internal API used exclusively by a given group, request an engineering review from one of the group's members. -After the engineering review is complete, assign the MR to the -[Technical Writer associated with the stage and group](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments) -in the modified documentation page's metadata. -If the page is not assigned to a specific group, follow the -[Technical Writing review process for development guidelines](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-development-guidelines). +Small fixes, like typos, can be merged by any user with at least the Maintainer role. #### Broader changes @@ -85,7 +65,6 @@ In these cases, use the following workflow: - [Quality](https://about.gitlab.com/handbook/engineering/quality/) - [Engineering Productivity](https://about.gitlab.com/handbook/engineering/quality/engineering-productivity/) - [Infrastructure](https://about.gitlab.com/handbook/engineering/infrastructure/) - - [Technical Writing](https://about.gitlab.com/handbook/product/ux/technical-writing/) You can skip this step for MRs authored by EMs or Staff Engineers responsible for their area. @@ -97,15 +76,12 @@ In these cases, use the following workflow: author / approver of the MR. If this is a significant change across multiple areas, request final review - and approval from the VP of Development, the DRI for Development Guidelines, - @clefelhocz1. + and approval from the VP of Development, who is the DRI for development guidelines. -1. After all approvals are complete, assign the MR to the - [Technical Writer associated with the stage and group](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments) - in the modified documentation page's metadata. - If the page is not assigned to a specific group, follow the - [Technical Writing review process for development guidelines](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-development-guidelines). - The Technical Writer may ask for additional approvals as previously suggested before merging the MR. +Any Maintainer can merge the MR. +If you would like a review by a technical writer, post a message in the #docs Slack channel. +Technical writers do not need to review the content, however, and any Maintainer +other than the MR author can merge. ### Reviewer values @@ -114,6 +90,8 @@ In these cases, use the following workflow: As a reviewer or as a reviewee, make sure to familiarize yourself with the [reviewer values](https://about.gitlab.com/handbook/engineering/workflow/reviewer-values/) we strive for at GitLab. +Also, any doc content should follow the [Documentation Style Guide](documentation/index.md). + ## Language-specific guides ### Go guides diff --git a/doc/development/documentation/workflow.md b/doc/development/documentation/workflow.md index fc0f4013104..5c99f5c48df 100644 --- a/doc/development/documentation/workflow.md +++ b/doc/development/documentation/workflow.md @@ -36,6 +36,13 @@ A member of the Technical Writing team adds these labels: `docs::` prefix. For example, `~docs::improvement`. - The [`~Technical Writing` team label](../labels/index.md#team-labels). +NOTE: +With the exception of `/doc/development/documentation`, +technical writers do not review content in the `doc/development` directory. +Any Maintainer can merge content in the `doc/development` directory. +If you would like a technical writer review of content in the `doc/development` directory, +ask in the `#docs` Slack channel. + ## Post-merge reviews If not assigned to a Technical Writer for review prior to merging, a review must be scheduled diff --git a/doc/development/internal_analytics/index.md b/doc/development/internal_analytics/index.md index d02e366252a..b0e47233777 100644 --- a/doc/development/internal_analytics/index.md +++ b/doc/development/internal_analytics/index.md @@ -14,6 +14,13 @@ when developing new features or instrumenting existing ones. ## Fundamental concepts +<div class="video-fallback"> + See the video about <a href="https://www.youtube.com/watch?v=GtFNXbjygWo">the concepts of events and metrics.</a> +</div> +<figure class="video_container"> + <iframe src="https://www.youtube-nocookie.com/embed/GtFNXbjygWo" frameborder="0" allowfullscreen="true"> </iframe> +</figure> + Events and metrics are the foundation of the internal analytics system. Understanding the difference between the two concepts is vital to using the system. diff --git a/doc/development/repository_storage_moves/index.md b/doc/development/repository_storage_moves/index.md new file mode 100644 index 00000000000..578bc1eabee --- /dev/null +++ b/doc/development/repository_storage_moves/index.md @@ -0,0 +1,102 @@ +--- +stage: Create +group: Source Code +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments +--- + +# Project Repository Storage Moves + +This document was created to help contributors understand the code design of +[project repository storage moves](../../api/project_repository_storage_moves.md). +Read this document before making changes to the code for this feature. + +This document is intentionally limited to an overview of how the code is +designed, as code can change often. To understand how a specific part of the +feature works, view the code and the specs. The details here explain how the +major components of the Code Owners feature work. + +NOTE: +This document should be updated when parts of the codebase referenced in this +document are updated, removed, or new parts are added. + +## Business logic + +- `Projects::RepositoryStorageMove`: Tracks the move, includes state machine. + - Defined in `app/models/projects/repository_storage_move.rb`. +- `RepositoryStorageMovable`: Contains the state machine logic, validators, and some helper methods. + - Defined in `app/models/concerns/repository_storage_movable.rb`. +- `Project`: The project model. + - Defined in `app/models/project.rb`. +- `CanMoveRepositoryStorage`: Contains helper methods that are into `Project`. + - Defined in `app/models/concerns/can_move_repository_storage.rb`. +- `API::ProjectRepositoryStorageMoves`: API class for project repository storage moves. + - Defined in `lib/api/project_repository_storage_moves.rb`. +- `Entities::Projects::RepositoryStorageMove`: API entity for serializing the `Projects::RepositoryStorageMove` model. + - Defined in `lib/api/entities/projects/repository_storage_moves.rb`. +- `Projects::ScheduleBulkRepositoryShardMovesService`: Service to schedule bulk moves. + - Defined in `app/services/projects/schedule_bulk_repository_shard_moves_service.rb`. +- `ScheduleBulkRepositoryShardMovesMethods`: Generic methods for bulk moves. + - Defined in `app/services/concerns/schedule_bulk_repository_shard_moves_methods.rb`. +- `Projects::ScheduleBulkRepositoryShardMovesWorker`: Worker to handle bulk moves. + - Defined in `app/workers/projects/schedule_bulk_repository_shard_moves_worker.rb`. +- `Projects::UpdateRepositoryStorageWorker`: Finds repository storage move and then calls the update storage service. + - Defined in `app/workers/projects/update_repository_storage_worker.rb`. +- `UpdateRepositoryStorageWorker`: Module containing generic logic for `Projects::UpdateRepositoryStorageWorker`. + - Defined in `app/workers/concerns/update_repository_storage_worker.rb`. +- `Projects::UpdateRepositoryStorageService`: Performs the move. + - Defined in `app/services/projects/update_repository_storage_service.rb`. +- `UpdateRepositoryStorageMethods`: Module with generic methods included in `Projects::UpdateRepositoryStorageService`. + - Defined in `app/services/concerns/update_repository_storage_methods.rb`. +- `Projects::UpdateService`: Schedules move if the passed parameters request a move. + - Defined in `app/services/projects/update_service.rb`. +- `PoolRepository`: Ruby object representing Gitaly `ObjectPool`. + - Defined in `app/models/pool_repository.rb`. +- `ObjectPool::CreateWorker`: Worker to create an `ObjectPool` via `Gitaly`. + - Defined in `app/workers/object_pool/create_worker.rb`. +- `ObjectPool::JoinWorker`: Worker to join an `ObjectPool` via `Gitaly`. + - Defined in `app/workers/object_pool/join_worker.rb`. +- `ObjectPool::ScheduleJoinWorker`: Worker to schedule an `ObjectPool::JoinWorker`. + - Defined in `app/workers/object_pool/schedule_join_worker.rb`. +- `ObjectPool::DestroyWorker`: Worker to destroy an `ObjectPool` via `Gitaly`. + - Defined in `app/workers/object_pool/destroy_worker.rb`. +- `ObjectPoolQueue`: Module to configure `ObjectPool` workers. + - Defined in `app/workers/concerns/object_pool_queue.rb`. +- `Repositories::ReplicateService`: Handles replication of data from one repository to another. + - Defined in `app/services/repositories/replicate_service.rb`. + +## Flow + +These flowcharts should help explain the flow from the endpoints down to the +models for different features. + +### Schedule a repository storage move via the API + +```mermaid +graph TD + A[<code>POST /api/:version/project_repository_storage_moves</code>] --> C + B[<code>POST /api/:version/projects/:id/repository_storage_moves</code>] --> D + C[Schedule move for each project in shard] --> D[Set state to scheduled] + D --> E[<code>after_transition callback</code>] + E --> F{<code>set_repository_read_only!</code>} + F -->|success| H[Schedule repository update worker] + F -->|error| G[Set state to failed] +``` + +### Moving the storage after being scheduled + +```mermaid +graph TD + A[Repository update worker scheduled] --> B{State is scheduled?} + B -->|Yes| C[Set state to started] + B -->|No| D[Return success] + C --> E{Same filesystem?} + E -.-> G[Set project repo to writable] + E -->|Yes| F["Mirror repositories (project, wiki, design, & pool)"] + G --> H[Update repo storage value] + H --> I[Set state to finished] + I --> J[Associate project with new pool repository] + J --> K[Unlink old pool repository] + K --> L[Update project repository storage values] + L --> N[Remove old paths if same filesystem] + N --> M[Set state to finished] +``` |