Commit a7ed7983 authored by Marcel Amirault's avatar Marcel Amirault

Find and replace issue links to add hyphens

Links to issues need to be update to use a hyphen,
this MR changes issue links in /doc/api and development
parent 24c9ac0e
...@@ -53,7 +53,7 @@ between v3 and v4; please read the [v3 to v4 documentation](v3_to_v4.md) ...@@ -53,7 +53,7 @@ between v3 and v4; please read the [v3 to v4 documentation](v3_to_v4.md)
### Current status ### Current status
Currently only API version v4 is available. Version v3 was removed in Currently only API version v4 is available. Version v3 was removed in
[GitLab 11.0](https://gitlab.com/gitlab-org/gitlab-foss/issues/36819). [GitLab 11.0](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/36819).
## Basic usage ## Basic usage
...@@ -180,7 +180,7 @@ Impersonation tokens are used exactly like regular personal access tokens, and c ...@@ -180,7 +180,7 @@ Impersonation tokens are used exactly like regular personal access tokens, and c
#### Disable impersonation #### Disable impersonation
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/40385) in GitLab 11.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/40385) in GitLab 11.6.
By default, impersonation is enabled. To disable impersonation: By default, impersonation is enabled. To disable impersonation:
......
# Appearance API **(CORE ONLY)** # Appearance API **(CORE ONLY)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/16647) in GitLab 12.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/16647) in GitLab 12.7.
Appearance API allows you to maintain GitLab's appearance as if using the GitLab UI at Appearance API allows you to maintain GitLab's appearance as if using the GitLab UI at
`/admin/appearance`. The API requires administrator privileges. `/admin/appearance`. The API requires administrator privileges.
......
...@@ -122,7 +122,7 @@ Example response: ...@@ -122,7 +122,7 @@ Example response:
## Group Audit Events **(STARTER)** ## Group Audit Events **(STARTER)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/34078) in GitLab 12.5. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/34078) in GitLab 12.5.
The Group Audit Events API allows you to retrieve [group audit events](../administration/audit_events.md#group-events-starter). The Group Audit Events API allows you to retrieve [group audit events](../administration/audit_events.md#group-events-starter).
......
# Container Registry API # Container Registry API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/55978) in GitLab 11.8. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/55978) in GitLab 11.8.
This is the API docs of the [GitLab Container Registry](../user/packages/container_registry/index.md). This is the API docs of the [GitLab Container Registry](../user/packages/container_registry/index.md).
...@@ -260,7 +260,7 @@ This action does not delete blobs. In order to delete them and recycle disk spac ...@@ -260,7 +260,7 @@ This action does not delete blobs. In order to delete them and recycle disk spac
NOTE: **Note:** NOTE: **Note:**
Since GitLab 12.4, individual tags are deleted. Since GitLab 12.4, individual tags are deleted.
For more details, see the [discussion](https://gitlab.com/gitlab-org/gitlab/issues/15737). For more details, see the [discussion](https://gitlab.com/gitlab-org/gitlab/-/issues/15737).
Examples: Examples:
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## List all deploy tokens ## List all deploy tokens
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Get a list of all deploy tokens across the GitLab instance. This endpoint requires admin access. Get a list of all deploy tokens across the GitLab instance. This endpoint requires admin access.
...@@ -39,7 +39,7 @@ Project deploy token API endpoints require project maintainer access or higher. ...@@ -39,7 +39,7 @@ Project deploy token API endpoints require project maintainer access or higher.
### List project deploy tokens ### List project deploy tokens
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Get a list of a project's deploy tokens. Get a list of a project's deploy tokens.
...@@ -78,7 +78,7 @@ Example response: ...@@ -78,7 +78,7 @@ Example response:
### Create a project deploy token ### Create a project deploy token
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Creates a new deploy token for a project. Creates a new deploy token for a project.
...@@ -115,7 +115,7 @@ Example response: ...@@ -115,7 +115,7 @@ Example response:
### Delete a project deploy token ### Delete a project deploy token
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Removes a deploy token from the project. Removes a deploy token from the project.
...@@ -140,7 +140,7 @@ These endpoints require group maintainer access or higher. ...@@ -140,7 +140,7 @@ These endpoints require group maintainer access or higher.
### List group deploy tokens ### List group deploy tokens
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Get a list of a group's deploy tokens Get a list of a group's deploy tokens
...@@ -179,7 +179,7 @@ Example response: ...@@ -179,7 +179,7 @@ Example response:
### Create a group deploy token ### Create a group deploy token
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Creates a new deploy token for a group. Creates a new deploy token for a group.
...@@ -218,7 +218,7 @@ Example response: ...@@ -218,7 +218,7 @@ Example response:
### Delete a group deploy token ### Delete a group deploy token
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/21811) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21811) in GitLab 12.9.
Removes a deploy token from the group. Removes a deploy token from the group.
......
...@@ -364,7 +364,7 @@ Example of a response: ...@@ -364,7 +364,7 @@ Example of a response:
## List of merge requests associated with a deployment ## List of merge requests associated with a deployment
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/35739) in GitLab 12.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35739) in GitLab 12.7.
This API retrieves the list of merge requests shipped with a given deployment: This API retrieves the list of merge requests shipped with a given deployment:
......
# Epics API **(PREMIUM)** # Epics API **(PREMIUM)**
> - Introduced in [GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2. > - Introduced in [GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2.
> - Single-level Epics [were moved](https://gitlab.com/gitlab-org/gitlab/issues/37081) to [GitLab Premium](https://about.gitlab.com/pricing/) in 12.8. > - Single-level Epics [were moved](https://gitlab.com/gitlab-org/gitlab/-/issues/37081) to [GitLab Premium](https://about.gitlab.com/pricing/) in 12.8.
Every API call to epic must be authenticated. Every API call to epic must be authenticated.
......
# Error Tracking settings API # Error Tracking settings API
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/34940) in GitLab 12.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/34940) in GitLab 12.7.
## Error Tracking project settings ## Error Tracking project settings
......
# Feature Flag Specs API **(PREMIUM)** # Feature Flag Specs API **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5.
The API for creating, updating, reading and deleting [Feature Flag Specs](../user/project/operations/feature_flags.md#define-environment-specs). The API for creating, updating, reading and deleting [Feature Flag Specs](../user/project/operations/feature_flags.md#define-environment-specs).
Automation engineers benefit from this API by being able to modify Feature Flag Specs without accessing user interface. Automation engineers benefit from this API by being able to modify Feature Flag Specs without accessing user interface.
......
# Feature Flags API **(PREMIUM)** # Feature Flags API **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5.
API for accessing resources of [GitLab Feature Flags](../user/project/operations/feature_flags.md). API for accessing resources of [GitLab Feature Flags](../user/project/operations/feature_flags.md).
......
# Group-level Variables API # Group-level Variables API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/34519) in GitLab 9.5 > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/34519) in GitLab 9.5
## List group variables ## List group variables
......
...@@ -150,7 +150,7 @@ Parameters: ...@@ -150,7 +150,7 @@ Parameters:
## Get all burndown chart events for a single milestone **(STARTER)** ## Get all burndown chart events for a single milestone **(STARTER)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4737) in GitLab 12.1 > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/4737) in GitLab 12.1
Get all burndown chart events for a single milestone. Get all burndown chart events for a single milestone.
......
...@@ -405,7 +405,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/ap ...@@ -405,7 +405,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/ap
This endpoint returns: This endpoint returns:
- All projects and shared projects in GitLab 12.5 and earlier. - All projects and shared projects in GitLab 12.5 and earlier.
- A maximum of 100 projects and shared projects [in GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/31031) - A maximum of 100 projects and shared projects [in GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/-/issues/31031)
and later. To get the details of all projects within a group, use the and later. To get the details of all projects within a group, use the
[list a group's projects endpoint](#list-a-groups-projects) instead. [list a group's projects endpoint](#list-a-groups-projects) instead.
...@@ -638,7 +638,7 @@ Parameters: ...@@ -638,7 +638,7 @@ Parameters:
| `auto_devops_enabled` | boolean | no | Default to Auto DevOps pipeline for all projects within this group. | | `auto_devops_enabled` | boolean | no | Default to Auto DevOps pipeline for all projects within this group. |
| `subgroup_creation_level` | string | no | Allowed to create subgroups. Can be `owner` (Owners), or `maintainer` (Maintainers). | | `subgroup_creation_level` | string | no | Allowed to create subgroups. Can be `owner` (Owners), or `maintainer` (Maintainers). |
| `emails_disabled` | boolean | no | Disable email notifications | | `emails_disabled` | boolean | no | Disable email notifications |
| `avatar` | mixed | no | Image file for avatar of the group. [Introduced in GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/issues/36681) | | `avatar` | mixed | no | Image file for avatar of the group. [Introduced in GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/36681) |
| `mentions_disabled` | boolean | no | Disable the capability of a group from getting mentioned | | `mentions_disabled` | boolean | no | Disable the capability of a group from getting mentioned |
| `lfs_enabled` | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. | | `lfs_enabled` | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. |
| `request_access_enabled` | boolean | no | Allow users to request member access. | | `request_access_enabled` | boolean | no | Allow users to request member access. |
...@@ -699,7 +699,7 @@ PUT /groups/:id ...@@ -699,7 +699,7 @@ PUT /groups/:id
| `auto_devops_enabled` | boolean | no | Default to Auto DevOps pipeline for all projects within this group. | | `auto_devops_enabled` | boolean | no | Default to Auto DevOps pipeline for all projects within this group. |
| `subgroup_creation_level` | string | no | Allowed to create subgroups. Can be `owner` (Owners), or `maintainer` (Maintainers). | | `subgroup_creation_level` | string | no | Allowed to create subgroups. Can be `owner` (Owners), or `maintainer` (Maintainers). |
| `emails_disabled` | boolean | no | Disable email notifications | | `emails_disabled` | boolean | no | Disable email notifications |
| `avatar` | mixed | no | Image file for avatar of the group. [Introduced in GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/issues/36681) | | `avatar` | mixed | no | Image file for avatar of the group. [Introduced in GitLab 12.9](https://gitlab.com/gitlab-org/gitlab/-/issues/36681) |
| `mentions_disabled` | boolean | no | Disable the capability of a group from getting mentioned | | `mentions_disabled` | boolean | no | Disable the capability of a group from getting mentioned |
| `lfs_enabled` (optional) | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. | | `lfs_enabled` (optional) | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. |
| `request_access_enabled` | boolean | no | Allow users to request member access. | | `request_access_enabled` | boolean | no | Allow users to request member access. |
...@@ -719,7 +719,7 @@ curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab ...@@ -719,7 +719,7 @@ curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab
This endpoint returns: This endpoint returns:
- All projects and shared projects in GitLab 12.5 and earlier. - All projects and shared projects in GitLab 12.5 and earlier.
- A maximum of 100 projects and shared projects [in GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/31031) - A maximum of 100 projects and shared projects [in GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/-/issues/31031)
and later. To get the details of all projects within a group, use the and later. To get the details of all projects within a group, use the
[list a group's projects endpoint](#list-a-groups-projects) instead. [list a group's projects endpoint](#list-a-groups-projects) instead.
...@@ -803,7 +803,7 @@ Only available to group owners and administrators. ...@@ -803,7 +803,7 @@ Only available to group owners and administrators.
This endpoint either: This endpoint either:
- Removes group, and queues a background job to delete all projects in the group as well. - Removes group, and queues a background job to delete all projects in the group as well.
- Since [GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/issues/33257), on [Premium or Silver](https://about.gitlab.com/pricing/) or higher tiers, marks a group for deletion. The deletion will happen 7 days later by default, but this can be changed in the [instance settings](../user/admin_area/settings/visibility_and_access_controls.md#default-deletion-adjourned-period-premium-only). - Since [GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/-/issues/33257), on [Premium or Silver](https://about.gitlab.com/pricing/) or higher tiers, marks a group for deletion. The deletion will happen 7 days later by default, but this can be changed in the [instance settings](../user/admin_area/settings/visibility_and_access_controls.md#default-deletion-adjourned-period-premium-only).
```plaintext ```plaintext
DELETE /groups/:id DELETE /groups/:id
...@@ -819,7 +819,7 @@ The response will be `202 Accepted` if the user has authorization. ...@@ -819,7 +819,7 @@ The response will be `202 Accepted` if the user has authorization.
## Restore group marked for deletion **(PREMIUM)** ## Restore group marked for deletion **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/33257) in GitLab 12.8. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33257) in GitLab 12.8.
Restores a group marked for deletion. Restores a group marked for deletion.
......
...@@ -631,7 +631,7 @@ the `epic` property: ...@@ -631,7 +631,7 @@ the `epic` property:
**Note**: The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value will only be present for issues which were closed after GitLab 10.6 and when the user account that closed the issue still exists. **Note**: The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value will only be present for issues which were closed after GitLab 10.6 and when the user account that closed the issue still exists.
**Note**: The `epic_iid` attribute is deprecated and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/issues/35157). **Note**: The `epic_iid` attribute is deprecated and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157).
Please use `iid` of the `epic` attribute instead. Please use `iid` of the `epic` attribute instead.
## New issue ## New issue
...@@ -658,7 +658,7 @@ POST /projects/:id/issues ...@@ -658,7 +658,7 @@ POST /projects/:id/issues
| `discussion_to_resolve` | string | no | The ID of a discussion to resolve. This will fill in the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. | | `discussion_to_resolve` | string | no | The ID of a discussion to resolve. This will fill in the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. |
| `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. | | `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. |
| `epic_id` **(ULTIMATE)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | | `epic_id` **(ULTIMATE)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. |
| `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/issues/35157)) | | `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157)) |
```shell ```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/4/issues?title=Issues%20with%20auth&labels=bug curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/4/issues?title=Issues%20with%20auth&labels=bug
...@@ -776,7 +776,7 @@ PUT /projects/:id/issues/:issue_iid ...@@ -776,7 +776,7 @@ PUT /projects/:id/issues/:issue_iid
| `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. 0 | | `weight` **(STARTER)** | integer | no | The weight of the issue. Valid values are greater than or equal to 0. 0 |
| `discussion_locked` | boolean | no | Flag indicating if the issue's discussion is locked. If the discussion is locked only project members can add or edit comments. | | `discussion_locked` | boolean | no | Flag indicating if the issue's discussion is locked. If the discussion is locked only project members can add or edit comments. |
| `epic_id` **(ULTIMATE)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. | | `epic_id` **(ULTIMATE)** | integer | no | ID of the epic to add the issue to. Valid values are greater than or equal to 0. |
| `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/issues/35157)) | | `epic_iid` **(ULTIMATE)** | integer | no | IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157)) |
```shell ```shell
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close
......
...@@ -133,7 +133,7 @@ Example response: ...@@ -133,7 +133,7 @@ Example response:
## Get user by deploy key fingerprint ## Get user by deploy key fingerprint
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/119209) in GitLab 12.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/119209) in GitLab 12.7.
Deploy keys are bound to the creating user, so if you query with a deploy key Deploy keys are bound to the creating user, so if you query with a deploy key
fingerprint you get additional information about the projects using that key. fingerprint you get additional information about the projects using that key.
......
...@@ -284,7 +284,7 @@ Example response: ...@@ -284,7 +284,7 @@ Example response:
### Set override flag for a member of a group ### Set override flag for a member of a group
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4875) in GitLab 12.10. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/4875) in GitLab 12.10.
By default, the access level of LDAP group members is set to the value specified By default, the access level of LDAP group members is set to the value specified
by LDAP through Group Sync. You can allow access level overrides by calling this endpoint. by LDAP through Group Sync. You can allow access level overrides by calling this endpoint.
...@@ -320,7 +320,7 @@ Example response: ...@@ -320,7 +320,7 @@ Example response:
### Remove override for a member of a group ### Remove override for a member of a group
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4875) in GitLab 12.10. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/4875) in GitLab 12.10.
Sets the override flag to false and allows LDAP Group Sync to reset the access Sets the override flag to false and allows LDAP Group Sync to reset the access
level to the LDAP-prescribed value. level to the LDAP-prescribed value.
......
...@@ -6,7 +6,7 @@ Configuration for approvals on all Merge Requests (MR) in the project. Must be a ...@@ -6,7 +6,7 @@ Configuration for approvals on all Merge Requests (MR) in the project. Must be a
### Get Configuration ### Get Configuration
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.
You can request information about a project's approval configuration using the You can request information about a project's approval configuration using the
following endpoint: following endpoint:
...@@ -34,7 +34,7 @@ GET /projects/:id/approvals ...@@ -34,7 +34,7 @@ GET /projects/:id/approvals
### Change configuration ### Change configuration
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.
If you are allowed to, you can change approval configuration using the following If you are allowed to, you can change approval configuration using the following
endpoint: endpoint:
...@@ -68,8 +68,8 @@ POST /projects/:id/approvals ...@@ -68,8 +68,8 @@ POST /projects/:id/approvals
### Get project-level rules ### Get project-level rules
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
> - `protected_branches` property was [introduced](https://gitlab.com/gitlab-org/gitlab/issues/460) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.7. > - `protected_branches` property was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/460) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.7.
You can request information about a project's approval rules using the following endpoint: You can request information about a project's approval rules using the following endpoint:
...@@ -168,7 +168,7 @@ GET /projects/:id/approval_rules ...@@ -168,7 +168,7 @@ GET /projects/:id/approval_rules
### Create project-level rule ### Create project-level rule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can create project approval rules using the following endpoint: You can create project approval rules using the following endpoint:
...@@ -270,7 +270,7 @@ POST /projects/:id/approval_rules ...@@ -270,7 +270,7 @@ POST /projects/:id/approval_rules
### Update project-level rule ### Update project-level rule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can update project approval rules using the following endpoint: You can update project approval rules using the following endpoint:
...@@ -375,7 +375,7 @@ PUT /projects/:id/approval_rules/:approval_rule_id ...@@ -375,7 +375,7 @@ PUT /projects/:id/approval_rules/:approval_rule_id
### Delete project-level rule ### Delete project-level rule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can delete project approval rules using the following endpoint: You can delete project approval rules using the following endpoint:
...@@ -393,7 +393,7 @@ DELETE /projects/:id/approval_rules/:approval_rule_id ...@@ -393,7 +393,7 @@ DELETE /projects/:id/approval_rules/:approval_rule_id
### Change allowed approvers ### Change allowed approvers
>**Note:** This API endpoint has been deprecated. Please use Approval Rule API instead. >**Note:** This API endpoint has been deprecated. Please use Approval Rule API instead.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.
If you are allowed to, you can change approvers and approver groups using If you are allowed to, you can change approvers and approver groups using
the following endpoint: the following endpoint:
...@@ -505,7 +505,7 @@ GET /projects/:id/merge_requests/:merge_request_iid/approvals ...@@ -505,7 +505,7 @@ GET /projects/:id/merge_requests/:merge_request_iid/approvals
### Change approval configuration ### Change approval configuration
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.
If you are allowed to, you can change `approvals_required` using the following If you are allowed to, you can change `approvals_required` using the following
endpoint: endpoint:
...@@ -542,7 +542,7 @@ POST /projects/:id/merge_requests/:merge_request_iid/approvals ...@@ -542,7 +542,7 @@ POST /projects/:id/merge_requests/:merge_request_iid/approvals
### Change allowed approvers for Merge Request ### Change allowed approvers for Merge Request
>**Note:** This API endpoint has been deprecated. Please use Approval Rule API instead. >**Note:** This API endpoint has been deprecated. Please use Approval Rule API instead.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/183) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.6.
If you are allowed to, you can change approvers and approver groups using If you are allowed to, you can change approvers and approver groups using
the following endpoint: the following endpoint:
...@@ -613,7 +613,7 @@ PUT /projects/:id/merge_requests/:merge_request_iid/approvers ...@@ -613,7 +613,7 @@ PUT /projects/:id/merge_requests/:merge_request_iid/approvers
### Get the approval state of merge requests ### Get the approval state of merge requests
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/13712) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13712) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can request information about a merge request's approval state by using the following endpoint: You can request information about a merge request's approval state by using the following endpoint:
...@@ -685,7 +685,7 @@ This includes additional information about the users who have already approved ...@@ -685,7 +685,7 @@ This includes additional information about the users who have already approved
### Get merge request level rules ### Get merge request level rules
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/13712) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13712) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can request information about a merge request's approval rules using the following endpoint: You can request information about a merge request's approval rules using the following endpoint:
...@@ -762,7 +762,7 @@ GET /projects/:id/merge_requests/:merge_request_iid/approval_rules ...@@ -762,7 +762,7 @@ GET /projects/:id/merge_requests/:merge_request_iid/approval_rules
### Create merge request level rule ### Create merge request level rule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can create merge request approval rules using the following endpoint: You can create merge request approval rules using the following endpoint:
...@@ -846,7 +846,7 @@ will be used. ...@@ -846,7 +846,7 @@ will be used.
### Update merge request level rule ### Update merge request level rule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can update merge request approval rules using the following endpoint: You can update merge request approval rules using the following endpoint:
...@@ -931,7 +931,7 @@ These are system generated rules. ...@@ -931,7 +931,7 @@ These are system generated rules.
### Delete merge request level rule ### Delete merge request level rule
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11877) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.3.
You can delete merge request approval rules using the following endpoint: You can delete merge request approval rules using the following endpoint:
......
...@@ -73,7 +73,7 @@ operation. If you are interested in the value of these fields from this ...@@ -73,7 +73,7 @@ operation. If you are interested in the value of these fields from this
endpoint, set the `with_merge_status_recheck` parameter to `true` in the query. endpoint, set the `with_merge_status_recheck` parameter to `true` in the query.
NOTE: **Note:** NOTE: **Note:**
[Starting in GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/issues/29984), [Starting in GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/-/issues/29984),
when `async_merge_request_check_mergeability` feature flag is enabled, the when `async_merge_request_check_mergeability` feature flag is enabled, the
mergeability (`merge_status`) of each merge request will be checked mergeability (`merge_status`) of each merge request will be checked
asynchronously when a request is made to this endpoint. Poll this API endpoint asynchronously when a request is made to this endpoint. Poll this API endpoint
...@@ -554,7 +554,7 @@ Parameters: ...@@ -554,7 +554,7 @@ Parameters:
- `include_rebase_in_progress` (optional) - If `true` response includes whether a rebase operation is in progress - `include_rebase_in_progress` (optional) - If `true` response includes whether a rebase operation is in progress
NOTE: **Note:** NOTE: **Note:**
[Starting in GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/issues/29984), [Starting in GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/-/issues/29984),
when `async_merge_request_check_mergeability` feature flag is enabled, the when `async_merge_request_check_mergeability` feature flag is enabled, the
mergeability (`merge_status`) of a merge request will be checked mergeability (`merge_status`) of a merge request will be checked
asynchronously when a request is made to this endpoint. Poll this API endpoint asynchronously when a request is made to this endpoint. Poll this API endpoint
......
# Merge Trains API **(PREMIUM)** # Merge Trains API **(PREMIUM)**
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/36146) in GitLab 12.9. > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/36146) in GitLab 12.9.
> - Using this API you can consume GitLab's [Merge Train](../ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md) entries. > - Using this API you can consume GitLab's [Merge Train](../ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md) entries.
Every API call to merge trains must be authenticated with Developer or higher [permissions](../user/permissions.md). Every API call to merge trains must be authenticated with Developer or higher [permissions](../user/permissions.md).
......
...@@ -135,7 +135,7 @@ Parameters: ...@@ -135,7 +135,7 @@ Parameters:
## Promote project milestone to a group milestone ## Promote project milestone to a group milestone
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/53861) in GitLab 11.9 > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53861) in GitLab 11.9
Only for users with Developer access to the group. Only for users with Developer access to the group.
...@@ -150,7 +150,7 @@ Parameters: ...@@ -150,7 +150,7 @@ Parameters:
## Get all burndown chart events for a single milestone **(STARTER)** ## Get all burndown chart events for a single milestone **(STARTER)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/4737) in GitLab 12.1 > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/4737) in GitLab 12.1
Gets all burndown chart events for a single milestone. Gets all burndown chart events for a single milestone.
......
...@@ -281,7 +281,7 @@ curl --request DELETE --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" "https://gi ...@@ -281,7 +281,7 @@ curl --request DELETE --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" "https://gi
## Run a scheduled pipeline immediately ## Run a scheduled pipeline immediately
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/201786) in GitLab 12.8. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/201786) in GitLab 12.8.
Trigger a new scheduled pipeline, which runs immediately. The next scheduled run Trigger a new scheduled pipeline, which runs immediately. The next scheduled run
of this pipeline is not affected. of this pipeline is not affected.
...@@ -311,7 +311,7 @@ Example response: ...@@ -311,7 +311,7 @@ Example response:
## Pipeline schedule variables ## Pipeline schedule variables
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/34518) in GitLab 10.0. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/34518) in GitLab 10.0.
## Create a new pipeline schedule variable ## Create a new pipeline schedule variable
......
# Project Aliases API **(PREMIUM ONLY)** # Project Aliases API **(PREMIUM ONLY)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/3264) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.1. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3264) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.1.
All methods require administrator authorization. All methods require administrator authorization.
......
# Project import/export API # Project import/export API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41899) in GitLab 10.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41899) in GitLab 10.6.
See also: See also:
......
...@@ -17,7 +17,7 @@ NOTE: **Note:** ...@@ -17,7 +17,7 @@ NOTE: **Note:**
From July 2019, the `Internal` visibility setting is disabled for new projects, groups, From July 2019, the `Internal` visibility setting is disabled for new projects, groups,
and snippets on GitLab.com. Existing projects, groups, and snippets using the `Internal` and snippets on GitLab.com. Existing projects, groups, and snippets using the `Internal`
visibility setting keep this setting. You can read more about the change in the visibility setting keep this setting. You can read more about the change in the
[relevant issue](https://gitlab.com/gitlab-org/gitlab/issues/12388). [relevant issue](https://gitlab.com/gitlab-org/gitlab/-/issues/12388).
## List snippets ## List snippets
...@@ -185,7 +185,7 @@ curl https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id/raw \ ...@@ -185,7 +185,7 @@ curl https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id/raw \
## Get user agent details ## Get user agent details
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/29508) in GitLab 9.4. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/29508) in GitLab 9.4.
Available only for admins. Available only for admins.
......
...@@ -16,7 +16,7 @@ Support will be added for [Issue and Merge Request templates](../user/project/de ...@@ -16,7 +16,7 @@ Support will be added for [Issue and Merge Request templates](../user/project/de
in a future release. in a future release.
Support for [Group-level file templates](../user/group/index.md#group-file-templates-premium) Support for [Group-level file templates](../user/group/index.md#group-file-templates-premium)
**(PREMIUM)** was [added](https://gitlab.com/gitlab-org/gitlab/issues/5987) **(PREMIUM)** was [added](https://gitlab.com/gitlab-org/gitlab/-/issues/5987)
in GitLab 11.5 in GitLab 11.5
## Get all templates of a particular type ## Get all templates of a particular type
......
# Project Vulnerabilities API **(ULTIMATE)** # Project Vulnerabilities API **(ULTIMATE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/10242) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10242) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.6.
CAUTION: **Caution:** CAUTION: **Caution:**
This API is currently in development and is protected by a **disabled** This API is currently in development and is protected by a **disabled**
......
...@@ -309,7 +309,7 @@ GET /projects?custom_attributes[key]=value&custom_attributes[other_key]=other_va ...@@ -309,7 +309,7 @@ GET /projects?custom_attributes[key]=value&custom_attributes[other_key]=other_va
### Pagination limits ### Pagination limits
From GitLab 13.0, [offset-based pagination](README.md#offset-based-pagination) will be From GitLab 13.0, [offset-based pagination](README.md#offset-based-pagination) will be
[limited to 50,000 records](https://gitlab.com/gitlab-org/gitlab/issues/34565). [limited to 50,000 records](https://gitlab.com/gitlab-org/gitlab/-/issues/34565).
[Keyset pagination](README.md#keyset-based-pagination) will be required to retrieve projects [Keyset pagination](README.md#keyset-based-pagination) will be required to retrieve projects
beyond this limit. beyond this limit.
...@@ -1806,7 +1806,7 @@ Example response: ...@@ -1806,7 +1806,7 @@ Example response:
This endpoint either: This endpoint either:
- Removes a project including all associated resources (issues, merge requests etc). - Removes a project including all associated resources (issues, merge requests etc).
- From [GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/issues/32935) on [Premium or Silver](https://about.gitlab.com/pricing/) or higher tiers, marks a project for deletion. Actual - From [GitLab 12.6](https://gitlab.com/gitlab-org/gitlab/-/issues/32935) on [Premium or Silver](https://about.gitlab.com/pricing/) or higher tiers, marks a project for deletion. Actual
deletion happens after number of days specified in deletion happens after number of days specified in
[instance settings](../user/admin_area/settings/visibility_and_access_controls.md#default-deletion-adjourned-period-premium-only). [instance settings](../user/admin_area/settings/visibility_and_access_controls.md#default-deletion-adjourned-period-premium-only).
...@@ -1820,7 +1820,7 @@ DELETE /projects/:id ...@@ -1820,7 +1820,7 @@ DELETE /projects/:id
## Restore project marked for deletion **(PREMIUM)** ## Restore project marked for deletion **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/32935) in GitLab 12.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/32935) in GitLab 12.6.
Restores project marked for deletion. Restores project marked for deletion.
......
# Protected environments API **(PREMIUM)** # Protected environments API **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/30595) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.8. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30595) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.8.
## Valid access levels ## Valid access levels
......
# Releases API # Releases API
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41766) in GitLab 11.7. > - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41766) in GitLab 11.7.
> - Using this API you can manipulate GitLab's [Release](../../user/project/releases/index.md) entries. > - Using this API you can manipulate GitLab's [Release](../../user/project/releases/index.md) entries.
> - For manipulating links as a release asset, see [Release Links API](links.md). > - For manipulating links as a release asset, see [Release Links API](links.md).
> - Release Evidences were [introduced](https://gitlab.com/gitlab-org/gitlab/issues/26019) in GitLab 12.5. > - Release Evidences were [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/26019) in GitLab 12.5.
## List Releases ## List Releases
...@@ -693,7 +693,7 @@ Example response: ...@@ -693,7 +693,7 @@ Example response:
## Upcoming Releases ## Upcoming Releases
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/38105) in GitLab 12.1. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/38105) in GitLab 12.1.
A release with a `released_at` attribute set to a future date will be labeled an **Upcoming Release** in the UI: A release with a `released_at` attribute set to a future date will be labeled an **Upcoming Release** in the UI:
......
# Release links API # Release links API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41766) in GitLab 11.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41766) in GitLab 11.7.
Using this API you can manipulate GitLab's [Release](../../user/project/releases/index.md) links. For manipulating other Release assets, see [Release API](index.md). Using this API you can manipulate GitLab's [Release](../../user/project/releases/index.md) links. For manipulating other Release assets, see [Release API](index.md).
GitLab supports links to `http`, `https`, and `ftp` assets. GitLab supports links to `http`, `https`, and `ftp` assets.
......
...@@ -7,7 +7,7 @@ outlined below. ...@@ -7,7 +7,7 @@ outlined below.
## List a project's remote mirrors ## List a project's remote mirrors
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/38121) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/38121) in GitLab 12.9.
Returns an Array of remote mirrors and their statuses: Returns an Array of remote mirrors and their statuses:
...@@ -46,7 +46,7 @@ and password information. ...@@ -46,7 +46,7 @@ and password information.
## Create a remote mirror ## Create a remote mirror
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/24189) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24189) in GitLab 12.9.
Create a remote mirror for a project. The mirror will be disabled by default. You can enable it by including the optional parameter `enabled` when creating it: Create a remote mirror for a project. The mirror will be disabled by default. You can enable it by including the optional parameter `enabled` when creating it:
...@@ -86,7 +86,7 @@ Example response: ...@@ -86,7 +86,7 @@ Example response:
## Update a remote mirror's attributes ## Update a remote mirror's attributes
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/38121) in GitLab 12.9. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/38121) in GitLab 12.9.
Toggle a remote mirror on or off, or change which types of branches are Toggle a remote mirror on or off, or change which types of branches are
mirrored: mirrored:
......
# Repository submodules API # Repository submodules API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41213) in GitLab 11.5 > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41213) in GitLab 11.5
## Update existing submodule reference in repository ## Update existing submodule reference in repository
......
# Search API # Search API
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/41763) in GitLab 10.5. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41763) in GitLab 10.5.
Every API call to search must be authenticated. Every API call to search must be authenticated.
...@@ -279,7 +279,7 @@ Example response: ...@@ -279,7 +279,7 @@ Example response:
] ]
``` ```
**Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/issues/34521). **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: commits **(STARTER)** ### Scope: commits **(STARTER)**
...@@ -350,7 +350,7 @@ Example response: ...@@ -350,7 +350,7 @@ Example response:
] ]
``` ```
**Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/issues/34521). **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: users ### Scope: users
...@@ -620,7 +620,7 @@ Example response: ...@@ -620,7 +620,7 @@ Example response:
] ]
``` ```
**Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/issues/34521). **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: commits **(STARTER)** ### Scope: commits **(STARTER)**
...@@ -691,7 +691,7 @@ Example response: ...@@ -691,7 +691,7 @@ Example response:
] ]
``` ```
**Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/issues/34521). **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: users ### Scope: users
...@@ -976,7 +976,7 @@ Example response: ...@@ -976,7 +976,7 @@ Example response:
] ]
``` ```
**Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/issues/34521). **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: commits ### Scope: commits
...@@ -1049,7 +1049,7 @@ Example response: ...@@ -1049,7 +1049,7 @@ Example response:
] ]
``` ```
**Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/issues/34521). **Note:** `filename` is deprecated in favor of `path`. Both return the full path of the file inside the repository, but in the future `filename` will be only the file name and not the full path. For details, see [issue 34521](https://gitlab.com/gitlab-org/gitlab/-/issues/34521).
### Scope: users ### Scope: users
......
...@@ -19,7 +19,7 @@ Parameters: ...@@ -19,7 +19,7 @@ Parameters:
| `sort` | string | no | Return tags sorted in `asc` or `desc` order. Default is `desc` | | `sort` | string | no | Return tags sorted in `asc` or `desc` order. Default is `desc` |
| `search` | string | no | Return list of tags matching the search criteria. You can use `^term` and `term$` to find tags that begin and end with `term` respectively. | | `search` | string | no | Return list of tags matching the search criteria. You can use `^term` and `term$` to find tags that begin and end with `term` respectively. |
> Support for `search` was [introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/54401) in GitLab 11.8. > Support for `search` was [introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/54401) in GitLab 11.8.
```json ```json
[ [
......
...@@ -1198,7 +1198,7 @@ Will return `201 OK` on success, `404 User Not Found` is user cannot be found or ...@@ -1198,7 +1198,7 @@ Will return `201 OK` on success, `404 User Not Found` is user cannot be found or
## Deactivate user ## Deactivate user
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/22257) in GitLab 12.4. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/22257) in GitLab 12.4.
Deactivates the specified user. Available only for admin. Deactivates the specified user. Available only for admin.
...@@ -1220,7 +1220,7 @@ Returns: ...@@ -1220,7 +1220,7 @@ Returns:
## Activate user ## Activate user
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/22257) in GitLab 12.4. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/22257) in GitLab 12.4.
Activates the specified user. Available only for admin. Activates the specified user. Available only for admin.
...@@ -1407,7 +1407,7 @@ The activities that update the timestamp are: ...@@ -1407,7 +1407,7 @@ The activities that update the timestamp are:
- Git HTTP/SSH activities (such as clone, push) - Git HTTP/SSH activities (such as clone, push)
- User logging in to GitLab - User logging in to GitLab
- User visiting pages related to Dashboards, Projects, Issues, and Merge Requests ([introduced](https://gitlab.com/gitlab-org/gitlab-foss/issues/54947) in GitLab 11.8) - User visiting pages related to Dashboards, Projects, Issues, and Merge Requests ([introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/54947) in GitLab 11.8)
- User using the API - User using the API
- User using the GraphQL API - User using the GraphQL API
...@@ -1454,7 +1454,7 @@ Please note that `last_activity_at` is deprecated, please use `last_activity_on` ...@@ -1454,7 +1454,7 @@ Please note that `last_activity_at` is deprecated, please use `last_activity_on`
## User memberships (admin only) ## User memberships (admin only)
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/20532) in GitLab 12.8. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/20532) in GitLab 12.8.
Lists all projects and groups a user is a member of. This endpoint is available for admins only. Lists all projects and groups a user is a member of. This endpoint is available for admins only.
It returns the `source_id`, `source_name`, `source_type` and `access_level` of a membership. It returns the `source_id`, `source_name`, `source_type` and `access_level` of a membership.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Since GitLab 9.0, API V4 is the preferred version to be used. Since GitLab 9.0, API V4 is the preferred version to be used.
API V3 was unsupported from GitLab 9.5, released on August API V3 was unsupported from GitLab 9.5, released on August
22, 2017. API v3 was removed in [GitLab 11.0](https://gitlab.com/gitlab-org/gitlab-foss/issues/36819). 22, 2017. API v3 was removed in [GitLab 11.0](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/36819).
The V3 API documentation is still The V3 API documentation is still
[available](https://gitlab.com/gitlab-org/gitlab-foss/blob/8-16-stable/doc/api/README.md). [available](https://gitlab.com/gitlab-org/gitlab-foss/blob/8-16-stable/doc/api/README.md).
......
# Vulnerabilities API **(ULTIMATE)** # Vulnerabilities API **(ULTIMATE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/10242) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.6. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10242) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.6.
NOTE: **Note:** NOTE: **Note:**
The former Vulnerabilities API was renamed to Vulnerability Findings API The former Vulnerabilities API was renamed to Vulnerability Findings API
......
# Vulnerability export API **(ULTIMATE)** # Vulnerability export API **(ULTIMATE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/197494) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.10. [Updated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30397) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/197494) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.10. [Updated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30397) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.0.
CAUTION: **Caution:** CAUTION: **Caution:**
This API is currently in development and is protected by a **disabled** This API is currently in development and is protected by a **disabled**
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
NOTE: **Note:** NOTE: **Note:**
This API resource is renamed from Vulnerabilities to Vulnerability Findings because the Vulnerabilities are reserved This API resource is renamed from Vulnerabilities to Vulnerability Findings because the Vulnerabilities are reserved
for serving the upcoming [Standalone Vulnerability objects](https://gitlab.com/gitlab-org/gitlab/issues/13561). for serving the upcoming [Standalone Vulnerability objects](https://gitlab.com/gitlab-org/gitlab/-/issues/13561).
To fix any broken integrations with the former Vulnerabilities API, change the `vulnerabilities` URL part to be To fix any broken integrations with the former Vulnerabilities API, change the `vulnerabilities` URL part to be
`vulnerability_findings`. `vulnerability_findings`.
......
...@@ -346,7 +346,7 @@ GitLab's GraphQL API is versionless, which means we maintain backwards ...@@ -346,7 +346,7 @@ GitLab's GraphQL API is versionless, which means we maintain backwards
compatibility with older versions of the API with every change. Rather compatibility with older versions of the API with every change. Rather
than removing a field, we need to _deprecate_ the field instead. In than removing a field, we need to _deprecate_ the field instead. In
future, GitLab future, GitLab
[may remove deprecated fields](https://gitlab.com/gitlab-org/gitlab/issues/32292). [may remove deprecated fields](https://gitlab.com/gitlab-org/gitlab/-/issues/32292).
Fields are deprecated using the `deprecated` property. The value Fields are deprecated using the `deprecated` property. The value
of the property is a `Hash` of: of the property is a `Hash` of:
......
...@@ -196,7 +196,7 @@ GitLab can be considered to have two layers from a process perspective: ...@@ -196,7 +196,7 @@ GitLab can be considered to have two layers from a process perspective:
- Process: `alertmanager` - Process: `alertmanager`
- GitLab.com: [Monitoring of GitLab.com](https://about.gitlab.com/handbook/engineering/monitoring/) - GitLab.com: [Monitoring of GitLab.com](https://about.gitlab.com/handbook/engineering/monitoring/)
[Alert manager](https://prometheus.io/docs/alerting/alertmanager/) is a tool provided by Prometheus that _"handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integration such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts."_ You can read more in [issue #45740](https://gitlab.com/gitlab-org/gitlab-foss/issues/45740) about what we will be alerting on. [Alert manager](https://prometheus.io/docs/alerting/alertmanager/) is a tool provided by Prometheus that _"handles alerts sent by client applications such as the Prometheus server. It takes care of deduplicating, grouping, and routing them to the correct receiver integration such as email, PagerDuty, or OpsGenie. It also takes care of silencing and inhibition of alerts."_ You can read more in [issue #45740](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/45740) about what we will be alerting on.
#### Certificate management #### Certificate management
...@@ -273,7 +273,7 @@ repository updates to secondary nodes. ...@@ -273,7 +273,7 @@ repository updates to secondary nodes.
- Configuration: - Configuration:
- [Omnibus](../administration/geo/replication/index.md#setup-instructions) - [Omnibus](../administration/geo/replication/index.md#setup-instructions)
- [Charts](https://gitlab.com/gitlab-org/charts/gitlab/issues/8) - [Charts](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/8)
- [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/geo.md) - [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/geo.md)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
...@@ -293,7 +293,7 @@ GitLab Exporter is a process designed in house that allows us to export metrics ...@@ -293,7 +293,7 @@ GitLab Exporter is a process designed in house that allows us to export metrics
- Configuration: - Configuration:
- [Omnibus](../administration/pages/index.md) - [Omnibus](../administration/pages/index.md)
- [Charts](https://gitlab.com/gitlab-org/charts/gitlab/issues/37) - [Charts](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/37)
- [Source](../install/installation.md#install-gitlab-pages) - [Source](../install/installation.md#install-gitlab-pages)
- [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/pages.md) - [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/pages.md)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
...@@ -359,12 +359,12 @@ Grafana is an open source, feature rich metrics dashboard and graph editor for G ...@@ -359,12 +359,12 @@ Grafana is an open source, feature rich metrics dashboard and graph editor for G
- [Project page](https://github.com/jaegertracing/jaeger/blob/master/README.md) - [Project page](https://github.com/jaegertracing/jaeger/blob/master/README.md)
- Configuration: - Configuration:
- [Omnibus](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4104) - [Omnibus](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/4104)
- [Charts](https://gitlab.com/gitlab-org/charts/gitlab/issues/1320) - [Charts](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/1320)
- [Source](../development/distributed_tracing.md#enabling-distributed-tracing) - [Source](../development/distributed_tracing.md#enabling-distributed-tracing)
- [GDK](../development/distributed_tracing.md#using-jaeger-in-the-gitlab-development-kit) - [GDK](../development/distributed_tracing.md#using-jaeger-in-the-gitlab-development-kit)
- Layer: Monitoring - Layer: Monitoring
- GitLab.com: [Configuration to enable Tracing for a GitLab instance](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4104) issue. - GitLab.com: [Configuration to enable Tracing for a GitLab instance](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/4104) issue.
Jaeger, inspired by Dapper and OpenZipkin, is a distributed tracing system. Jaeger, inspired by Dapper and OpenZipkin, is a distributed tracing system.
It can be used for monitoring microservices-based distributed systems. It can be used for monitoring microservices-based distributed systems.
...@@ -424,7 +424,7 @@ NGINX has an Ingress port for all HTTP requests and routes them to the appropria ...@@ -424,7 +424,7 @@ NGINX has an Ingress port for all HTTP requests and routes them to the appropria
- [Project page](https://github.com/prometheus/node_exporter/blob/master/README.md) - [Project page](https://github.com/prometheus/node_exporter/blob/master/README.md)
- Configuration: - Configuration:
- [Omnibus](../administration/monitoring/prometheus/node_exporter.md) - [Omnibus](../administration/monitoring/prometheus/node_exporter.md)
- [Charts](https://gitlab.com/gitlab-org/charts/gitlab/issues/1332) - [Charts](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/1332)
- Layer: Monitoring - Layer: Monitoring
- Process: `node-exporter` - Process: `node-exporter`
- GitLab.com: [Monitoring of GitLab.com](https://about.gitlab.com/handbook/engineering/monitoring/) - GitLab.com: [Monitoring of GitLab.com](https://about.gitlab.com/handbook/engineering/monitoring/)
...@@ -545,7 +545,7 @@ An external registry can also be configured to use GitLab as an auth endpoint. ...@@ -545,7 +545,7 @@ An external registry can also be configured to use GitLab as an auth endpoint.
- [Project page](https://github.com/getsentry/sentry/) - [Project page](https://github.com/getsentry/sentry/)
- Configuration: - Configuration:
- [Omnibus](https://docs.gitlab.com/omnibus/settings/configuration.html#error-reporting-and-logging-with-sentry) - [Omnibus](https://docs.gitlab.com/omnibus/settings/configuration.html#error-reporting-and-logging-with-sentry)
- [Charts](https://gitlab.com/gitlab-org/charts/gitlab/issues/1319) - [Charts](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/1319)
- [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example)
- Layer: Monitoring - Layer: Monitoring
......
...@@ -283,7 +283,7 @@ end ...@@ -283,7 +283,7 @@ end
The final step runs for any un-migrated rows after all of the jobs have been The final step runs for any un-migrated rows after all of the jobs have been
processed. This is in case a Sidekiq process running the background migrations processed. This is in case a Sidekiq process running the background migrations
received SIGKILL, leading to the jobs being lost. (See received SIGKILL, leading to the jobs being lost. (See
[more reliable Sidekiq queue](https://gitlab.com/gitlab-org/gitlab-foss/issues/36791) for more information.) [more reliable Sidekiq queue](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/36791) for more information.)
If the application does not depend on the data being 100% migrated (for If the application does not depend on the data being 100% migrated (for
instance, the data is advisory, and not mission-critical), then this final step instance, the data is advisory, and not mission-critical), then this final step
...@@ -312,7 +312,7 @@ to migrate you database down and up, which can result in other background ...@@ -312,7 +312,7 @@ to migrate you database down and up, which can result in other background
migrations being called. That means that using `spy` test doubles with migrations being called. That means that using `spy` test doubles with
`have_received` is encouraged, instead of using regular test doubles, because `have_received` is encouraged, instead of using regular test doubles, because
your expectations defined in a `it` block can conflict with what is being your expectations defined in a `it` block can conflict with what is being
called in RSpec hooks. See [issue #35351](https://gitlab.com/gitlab-org/gitlab/issues/18839) called in RSpec hooks. See [issue #35351](https://gitlab.com/gitlab-org/gitlab/-/issues/18839)
for more details. for more details.
## Best practices ## Best practices
......
...@@ -282,7 +282,7 @@ multiple times per patch release. This was compounded when we had to release ...@@ -282,7 +282,7 @@ multiple times per patch release. This was compounded when we had to release
multiple patches at once due to a security issue. multiple patches at once due to a security issue.
We needed to automate all of this manual work. So we We needed to automate all of this manual work. So we
[started brainstorming](https://gitlab.com/gitlab-org/gitlab-foss/issues/17826). [started brainstorming](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/17826).
After much discussion we settled on the current solution of one file per entry, After much discussion we settled on the current solution of one file per entry,
and then compiling the entries into the overall `CHANGELOG.md` file during the and then compiling the entries into the overall `CHANGELOG.md` file during the
[release process](https://gitlab.com/gitlab-org/release-tools). [release process](https://gitlab.com/gitlab-org/release-tools).
......
...@@ -9,6 +9,6 @@ Examples: ...@@ -9,6 +9,6 @@ Examples:
```ruby ```ruby
# Deprecated scope until code_owner column has been migrated to rule_type. # Deprecated scope until code_owner column has been migrated to rule_type.
# To be removed with https://gitlab.com/gitlab-org/gitlab/issues/11834. # To be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/11834.
scope :code_owner, -> { where(code_owner: true).or(where(rule_type: :code_owner)) } scope :code_owner, -> { where(code_owner: true).or(where(rule_type: :code_owner)) }
``` ```
...@@ -16,7 +16,7 @@ see fit. ...@@ -16,7 +16,7 @@ see fit.
Our issue triage policies are [described in our handbook](https://about.gitlab.com/handbook/engineering/quality/issue-triage/). Our issue triage policies are [described in our handbook](https://about.gitlab.com/handbook/engineering/quality/issue-triage/).
You are very welcome to help the GitLab team triage issues. You are very welcome to help the GitLab team triage issues.
We also organize [issue bash events](https://gitlab.com/gitlab-org/gitlab-foss/issues/17815) We also organize [issue bash events](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/17815)
once every quarter. once every quarter.
The most important thing is making sure valid issues receive feedback from the The most important thing is making sure valid issues receive feedback from the
...@@ -351,7 +351,7 @@ features from GitLab EE to GitLab CE, related issues would be labeled with ...@@ -351,7 +351,7 @@ features from GitLab EE to GitLab CE, related issues would be labeled with
~"stewardship". ~"stewardship".
A recent example of this was the issue for A recent example of this was the issue for
[bringing the time tracking API to GitLab CE](https://gitlab.com/gitlab-org/gitlab-foss/issues/25517#note_20019084). [bringing the time tracking API to GitLab CE](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/25517#note_20019084).
## Feature proposals ## Feature proposals
...@@ -403,7 +403,7 @@ below will make it easy to manage this, without unnecessary overhead. ...@@ -403,7 +403,7 @@ below will make it easy to manage this, without unnecessary overhead.
Every monthly release has a corresponding issue on the CE issue tracker to keep Every monthly release has a corresponding issue on the CE issue tracker to keep
track of functionality broken by that release and any fixes that need to be track of functionality broken by that release and any fixes that need to be
included in a patch release (see included in a patch release (see
[8.3 Regressions](https://gitlab.com/gitlab-org/gitlab-foss/issues/4127) as an example). [8.3 Regressions](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/4127) as an example).
As outlined in the issue description, the intended workflow is to post one note As outlined in the issue description, the intended workflow is to post one note
with a reference to an issue describing the regression, and then to update that with a reference to an issue describing the regression, and then to update that
......
...@@ -524,7 +524,7 @@ four repositories that are the sources for <https://docs.gitlab.com>: ...@@ -524,7 +524,7 @@ four repositories that are the sources for <https://docs.gitlab.com>:
By default all rules are enabled, so the configuration file is used to disable unwanted By default all rules are enabled, so the configuration file is used to disable unwanted
rules, and also to configure optional parameters for enabled rules as needed. You can rules, and also to configure optional parameters for enabled rules as needed. You can
also check [the issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/64352) that also check [the issue](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/64352) that
tracked the changes required to implement these rules, and details which rules were tracked the changes required to implement these rules, and details which rules were
on or off when markdownlint was enabled on the docs. on or off when markdownlint was enabled on the docs.
......
...@@ -53,12 +53,12 @@ product, and all together are pulled to generate the docs website: ...@@ -53,12 +53,12 @@ product, and all together are pulled to generate the docs website:
- [GitLab Chart](https://gitlab.com/charts/gitlab/tree/master/doc) - [GitLab Chart](https://gitlab.com/charts/gitlab/tree/master/doc)
NOTE: **Note:** NOTE: **Note:**
In September 2019, we [moved towards a single codebase](https://gitlab.com/gitlab-org/gitlab/issues/2952), In September 2019, we [moved towards a single codebase](https://gitlab.com/gitlab-org/gitlab/-/issues/2952),
as such the docs for CE and EE are now identical. For historical reasons and as such the docs for CE and EE are now identical. For historical reasons and
in order not to break any existing links throughout the internet, we still in order not to break any existing links throughout the internet, we still
maintain the CE docs (`https://docs.gitlab.com/ce/`), although it is hidden maintain the CE docs (`https://docs.gitlab.com/ce/`), although it is hidden
from the website, and is now a symlink to the EE docs. When from the website, and is now a symlink to the EE docs. When
[Pages supports redirects](https://gitlab.com/gitlab-org/gitlab-pages/issues/24), [Pages supports redirects](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/24),
we will be able to remove this completely. we will be able to remove this completely.
## Assets ## Assets
......
...@@ -793,7 +793,7 @@ Instead: ...@@ -793,7 +793,7 @@ Instead:
Example: Example:
```markdown ```markdown
For more information, see the [confidential issue](../../user/project/issues/confidential_issues.md) `https://gitlab.com/gitlab-org/gitlab-foss/issues/<issue_number>`. For more information, see the [confidential issue](../../user/project/issues/confidential_issues.md) `https://gitlab.com/gitlab-org/gitlab-foss/-/issues/<issue_number>`.
``` ```
### Link to specific lines of code ### Link to specific lines of code
......
...@@ -104,7 +104,7 @@ The process involves the following: ...@@ -104,7 +104,7 @@ The process involves the following:
- Ensure the appropriate labels are applied, including any required to pick a merge request into - Ensure the appropriate labels are applied, including any required to pick a merge request into
a release. a release.
- Ensure that, if there has not been a Technical Writer review completed or scheduled, they - Ensure that, if there has not been a Technical Writer review completed or scheduled, they
[create the required issue](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review), assign to the Technical Writer of the given stage group, [create the required issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Doc%20Review), assign to the Technical Writer of the given stage group,
and link it from the merge request. and link it from the merge request.
The process is reflected in the **Documentation** The process is reflected in the **Documentation**
...@@ -113,14 +113,14 @@ The process is reflected in the **Documentation** ...@@ -113,14 +113,14 @@ The process is reflected in the **Documentation**
## Other ways to help ## Other ways to help
If you have ideas for further documentation resources please If you have ideas for further documentation resources please
[create an issue](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Documentation) [create an issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Documentation)
using the Documentation template. using the Documentation template.
## Post-merge reviews ## Post-merge reviews
If not assigned to a Technical Writer for review prior to merging, a review must be scheduled If not assigned to a Technical Writer for review prior to merging, a review must be scheduled
immediately after merge by the developer or maintainer. For this, immediately after merge by the developer or maintainer. For this,
create an issue using the [Doc Review description template](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review) create an issue using the [Doc Review description template](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Doc%20Review)
and link to it from the merged merge request that introduced the documentation change. and link to it from the merged merge request that introduced the documentation change.
Circumstances where a regular pre-merge Technical Writer review might be skipped include: Circumstances where a regular pre-merge Technical Writer review might be skipped include:
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
## Act as CE when unlicensed ## Act as CE when unlicensed
Since the implementation of Since the implementation of
[GitLab CE features to work with unlicensed EE instance](https://gitlab.com/gitlab-org/gitlab/issues/2500) [GitLab CE features to work with unlicensed EE instance](https://gitlab.com/gitlab-org/gitlab/-/issues/2500)
GitLab Enterprise Edition should work like GitLab Community Edition GitLab Enterprise Edition should work like GitLab Community Edition
when no license is active. So EE features always should be guarded by when no license is active. So EE features always should be guarded by
`project.feature_available?` or `group.feature_available?` (or `project.feature_available?` or `group.feature_available?` (or
......
...@@ -30,7 +30,7 @@ Additionally, if you need large repos or multiple forks for testing, please cons ...@@ -30,7 +30,7 @@ Additionally, if you need large repos or multiple forks for testing, please cons
The Elasticsearch integration depends on an external indexer. We ship an [indexer written in Go](https://gitlab.com/gitlab-org/gitlab-elasticsearch-indexer). The user must trigger the initial indexing via a Rake task but, after this is done, GitLab itself will trigger reindexing when required via `after_` callbacks on create, update, and destroy that are inherited from [/ee/app/models/concerns/elastic/application_versioned_search.rb](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/models/concerns/elastic/application_versioned_search.rb). The Elasticsearch integration depends on an external indexer. We ship an [indexer written in Go](https://gitlab.com/gitlab-org/gitlab-elasticsearch-indexer). The user must trigger the initial indexing via a Rake task but, after this is done, GitLab itself will trigger reindexing when required via `after_` callbacks on create, update, and destroy that are inherited from [/ee/app/models/concerns/elastic/application_versioned_search.rb](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/models/concerns/elastic/application_versioned_search.rb).
After initial indexing is complete, create, update, and delete operations for all models except projects (see [#207494](https://gitlab.com/gitlab-org/gitlab/issues/207494)) are tracked in a Redis [`ZSET`](https://redis.io/topics/data-types#sorted-sets). A regular `sidekiq-cron` `ElasticIndexBulkCronWorker` processes this queue, updating many Elasticsearch documents at a time with the [Bulk Request API](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html). After initial indexing is complete, create, update, and delete operations for all models except projects (see [#207494](https://gitlab.com/gitlab-org/gitlab/-/issues/207494)) are tracked in a Redis [`ZSET`](https://redis.io/topics/data-types#sorted-sets). A regular `sidekiq-cron` `ElasticIndexBulkCronWorker` processes this queue, updating many Elasticsearch documents at a time with the [Bulk Request API](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html).
Search queries are generated by the concerns found in [ee/app/models/concerns/elastic](https://gitlab.com/gitlab-org/gitlab/tree/master/ee/app/models/concerns/elastic). These concerns are also in charge of access control, and have been a historic source of security bugs so please pay close attention to them! Search queries are generated by the concerns found in [ee/app/models/concerns/elastic](https://gitlab.com/gitlab-org/gitlab/tree/master/ee/app/models/concerns/elastic). These concerns are also in charge of access control, and have been a historic source of security bugs so please pay close attention to them!
......
...@@ -23,7 +23,7 @@ Please use your best judgment when to use it and please contribute new points th ...@@ -23,7 +23,7 @@ Please use your best judgment when to use it and please contribute new points th
- [ ] Are all necessary UX specifications available that you will need in order to implement? Are there new UX components/patterns in the designs? Then contact the UI component team early on. How should error messages or validation be handled? - [ ] Are all necessary UX specifications available that you will need in order to implement? Are there new UX components/patterns in the designs? Then contact the UI component team early on. How should error messages or validation be handled?
- [ ] **Library usage** Use Vuex as soon as you have even a medium state to manage, use Vue router if you need to have different views internally and want to link from the outside. Check what libraries we already have for which occasions. - [ ] **Library usage** Use Vuex as soon as you have even a medium state to manage, use Vue router if you need to have different views internally and want to link from the outside. Check what libraries we already have for which occasions.
- [ ] **Plan your implementation:** - [ ] **Plan your implementation:**
- [ ] **Architecture plan:** Create a plan aligned with GitLab's architecture, how you are going to do the implementation, for example Vue application setup and its components (through [onion skinning](https://gitlab.com/gitlab-org/gitlab-foss/issues/35873#note_39994091)), Store structure and data flow, which existing Vue components can you reuse. It's a good idea to go through your plan with another engineer to refine it. - [ ] **Architecture plan:** Create a plan aligned with GitLab's architecture, how you are going to do the implementation, for example Vue application setup and its components (through [onion skinning](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/35873#note_39994091)), Store structure and data flow, which existing Vue components can you reuse. It's a good idea to go through your plan with another engineer to refine it.
- [ ] **Backend:** The best way is to kickoff the implementation in a call and discuss with the assigned Backend engineer what you will need from the backend and also when. Can you reuse existing API's? How is the performance with the planned architecture? Maybe create together a JSON mock object to already start with development. - [ ] **Backend:** The best way is to kickoff the implementation in a call and discuss with the assigned Backend engineer what you will need from the backend and also when. Can you reuse existing API's? How is the performance with the planned architecture? Maybe create together a JSON mock object to already start with development.
- [ ] **Communication:** It also makes sense to have for bigger features an own slack channel (normally called #f_{feature_name}) and even weekly demo calls with all people involved. - [ ] **Communication:** It also makes sense to have for bigger features an own slack channel (normally called #f_{feature_name}) and even weekly demo calls with all people involved.
- [ ] **Dependency Plan:** Are there big dependencies in the plan between you and others, then maybe create an execution diagram to show what is blocking which part and the order of the different parts. - [ ] **Dependency Plan:** Are there big dependencies in the plan between you and others, then maybe create an execution diagram to show what is blocking which part and the order of the different parts.
......
...@@ -82,7 +82,7 @@ To avoid this behavior, add the class `js-no-auto-disable` to the button. ...@@ -82,7 +82,7 @@ To avoid this behavior, add the class `js-no-auto-disable` to the button.
### 5. Should I use a full URL (i.e. `gon.gitlab_url`) or a full path (i.e. `gon.relative_url_root`) when referencing backend endpoints? ### 5. Should I use a full URL (i.e. `gon.gitlab_url`) or a full path (i.e. `gon.relative_url_root`) when referencing backend endpoints?
It's preferred to use a **full path** over a **full URL** because the URL will use the hostname configured with It's preferred to use a **full path** over a **full URL** because the URL will use the hostname configured with
GitLab which may not match the request. This will cause [CORS issues like this Web IDE one](https://gitlab.com/gitlab-org/gitlab/issues/36810). GitLab which may not match the request. This will cause [CORS issues like this Web IDE one](https://gitlab.com/gitlab-org/gitlab/-/issues/36810).
Example: Example:
......
...@@ -53,7 +53,7 @@ Please check this [rules](https://github.com/vuejs/eslint-plugin-vue#bulb-rules) ...@@ -53,7 +53,7 @@ Please check this [rules](https://github.com/vuejs/eslint-plugin-vue#bulb-rules)
## Naming ## Naming
1. **Extensions**: Use `.vue` extension for Vue components. Do not use `.js` as file extension ([#34371](https://gitlab.com/gitlab-org/gitlab-foss/issues/34371)). 1. **Extensions**: Use `.vue` extension for Vue components. Do not use `.js` as file extension ([#34371](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/34371)).
1. **Reference Naming**: Use PascalCase for their instances: 1. **Reference Naming**: Use PascalCase for their instances:
```javascript ```javascript
......
...@@ -40,13 +40,13 @@ In particular, note that: ...@@ -40,13 +40,13 @@ In particular, note that:
This is more complicated than is ideal. It makes the query construction more This is more complicated than is ideal. It makes the query construction more
prone to errors (such as prone to errors (such as
[issue #15557](https://gitlab.com/gitlab-org/gitlab-foss/issues/15557)). [issue #15557](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/15557)).
## Attempt A: WHERE EXISTS ## Attempt A: WHERE EXISTS
### Attempt A1: use multiple subqueries with WHERE EXISTS ### Attempt A1: use multiple subqueries with WHERE EXISTS
In [issue #37137](https://gitlab.com/gitlab-org/gitlab-foss/issues/37137) In [issue #37137](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/37137)
and its associated [merge request](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/14022), and its associated [merge request](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/14022),
we tried to replace the `GROUP BY` with multiple uses of `WHERE EXISTS`. For the we tried to replace the `GROUP BY` with multiple uses of `WHERE EXISTS`. For the
example above, this would give: example above, this would give:
...@@ -83,7 +83,7 @@ Having [removed MySQL support in GitLab 12.1](https://about.gitlab.com/blog/2019 ...@@ -83,7 +83,7 @@ Having [removed MySQL support in GitLab 12.1](https://about.gitlab.com/blog/2019
using [PostgreSQL's arrays](https://www.postgresql.org/docs/11/arrays.html) became more using [PostgreSQL's arrays](https://www.postgresql.org/docs/11/arrays.html) became more
tractable as we didn't have to support two databases. We discussed denormalizing tractable as we didn't have to support two databases. We discussed denormalizing
the `label_links` table for querying in the `label_links` table for querying in
[issue #49651](https://gitlab.com/gitlab-org/gitlab-foss/issues/49651), [issue #49651](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/49651),
with two options: label IDs and titles. with two options: label IDs and titles.
We can think of both of those as array columns on `issues`, `merge_requests`, We can think of both of those as array columns on `issues`, `merge_requests`,
...@@ -147,7 +147,7 @@ WHERE ...@@ -147,7 +147,7 @@ WHERE
label_titles @> ARRAY['Plan', 'backend'] label_titles @> ARRAY['Plan', 'backend']
``` ```
And our [tests in issue #49651](https://gitlab.com/gitlab-org/gitlab-foss/issues/49651#note_188777346) And our [tests in issue #49651](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/49651#note_188777346)
showed that this could be fast. showed that this could be fast.
However, at present, the disadvantages outweigh the advantages. However, at present, the disadvantages outweigh the advantages.
......
...@@ -89,7 +89,7 @@ are as follows: ...@@ -89,7 +89,7 @@ are as follows:
(`pool.source_project`) (`pool.source_project`)
> TODO Fix invalid SQL data for pools created prior to GitLab 11.11 > TODO Fix invalid SQL data for pools created prior to GitLab 11.11
> <https://gitlab.com/gitlab-org/gitaly/issues/1653>. > <https://gitlab.com/gitlab-org/gitaly/-/issues/1653>.
### Assumptions ### Assumptions
...@@ -133,7 +133,7 @@ are as follows: ...@@ -133,7 +133,7 @@ are as follows:
repository. repository.
> TODO should forks of forks be deduplicated? > TODO should forks of forks be deduplicated?
> <https://gitlab.com/gitlab-org/gitaly/issues/1532> > <https://gitlab.com/gitlab-org/gitaly/-/issues/1532>
### Consequences ### Consequences
...@@ -191,4 +191,4 @@ the secondary, at which stage Git objects will get deduplicated. ...@@ -191,4 +191,4 @@ the secondary, at which stage Git objects will get deduplicated.
> TODO How do we handle the edge case where at the time the Geo > TODO How do we handle the edge case where at the time the Geo
> secondary tries to create the pool repository, the source project does > secondary tries to create the pool repository, the source project does
> not exist? <https://gitlab.com/gitlab-org/gitaly/issues/1533> > not exist? <https://gitlab.com/gitlab-org/gitaly/-/issues/1533>
...@@ -85,7 +85,7 @@ While Gitaly can handle all Git access, many of GitLab customers still ...@@ -85,7 +85,7 @@ While Gitaly can handle all Git access, many of GitLab customers still
run Gitaly atop NFS. The legacy Rugged implementation for Git calls may run Gitaly atop NFS. The legacy Rugged implementation for Git calls may
be faster than the Gitaly RPC due to N+1 Gitaly calls and other be faster than the Gitaly RPC due to N+1 Gitaly calls and other
reasons. See [the reasons. See [the
issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/57317) for more issue](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/57317) for more
details. details.
Until GitLab has eliminated most of these inefficiencies or the use of Until GitLab has eliminated most of these inefficiencies or the use of
......
...@@ -105,7 +105,7 @@ Including a `.golangci.yml` in the root directory of the project allows for ...@@ -105,7 +105,7 @@ Including a `.golangci.yml` in the root directory of the project allows for
configuration of `golangci-lint`. All options for `golangci-lint` are listed in configuration of `golangci-lint`. All options for `golangci-lint` are listed in
this [example](https://github.com/golangci/golangci-lint/blob/master/.golangci.example.yml). this [example](https://github.com/golangci/golangci-lint/blob/master/.golangci.example.yml).
Once [recursive includes](https://gitlab.com/gitlab-org/gitlab-foss/issues/56836) Once [recursive includes](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/56836)
become available, you will be able to share job templates like this become available, you will be able to share job templates like this
[analyzer](https://gitlab.com/gitlab-org/security-products/ci-templates/raw/master/includes-dev/analyzer.yml). [analyzer](https://gitlab.com/gitlab-org/security-products/ci-templates/raw/master/includes-dev/analyzer.yml).
......
...@@ -20,7 +20,7 @@ doesn't do. Create a new pipeline at `https://gitlab.com/gitlab-org/gitlab/pipel ...@@ -20,7 +20,7 @@ doesn't do. Create a new pipeline at `https://gitlab.com/gitlab-org/gitlab/pipel
If there are validation errors, the easiest solution is to disapprove If there are validation errors, the easiest solution is to disapprove
the offending string in CrowdIn, leaving a comment with what is the offending string in CrowdIn, leaving a comment with what is
required to fix the offense. There is an required to fix the offense. There is an
[issue](https://gitlab.com/gitlab-org/gitlab/issues/23256) [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/23256)
suggesting to automate this process. Disapproving will exclude the suggesting to automate this process. Disapproving will exclude the
invalid translation, the merge request will be updated within a few invalid translation, the merge request will be updated within a few
minutes. minutes.
...@@ -31,7 +31,7 @@ clicking `Pause sync` on the [CrowdIn integration settings ...@@ -31,7 +31,7 @@ clicking `Pause sync` on the [CrowdIn integration settings
page](https://translate.gitlab.com/project/gitlab-ee/settings#integration). page](https://translate.gitlab.com/project/gitlab-ee/settings#integration).
When all failures are resolved, the translations need to be double When all failures are resolved, the translations need to be double
checked once more as discussed in [confidential issue](../../user/project/issues/confidential_issues.md) `https://gitlab.com/gitlab-org/gitlab/issues/19485`. checked once more as discussed in [confidential issue](../../user/project/issues/confidential_issues.md) `https://gitlab.com/gitlab-org/gitlab/-/issues/19485`.
## Merging translations ## Merging translations
...@@ -40,7 +40,7 @@ translations can be merged into the master branch. When merging the translations ...@@ -40,7 +40,7 @@ translations can be merged into the master branch. When merging the translations
make sure to check the **Remove source branch** checkbox, so CrowdIn recreates the make sure to check the **Remove source branch** checkbox, so CrowdIn recreates the
`master-i18n` from master after the new translation was merged. `master-i18n` from master after the new translation was merged.
We are discussing [automating this entire process](https://gitlab.com/gitlab-org/gitlab/issues/19896). We are discussing [automating this entire process](https://gitlab.com/gitlab-org/gitlab/-/issues/19896).
## Recreate the merge request ## Recreate the merge request
......
...@@ -99,7 +99,7 @@ importing big projects, using a foreground import: ...@@ -99,7 +99,7 @@ importing big projects, using a foreground import:
The Import/Export feature is constantly updated (adding new things to export), however The Import/Export feature is constantly updated (adding new things to export), however
the code hasn't been refactored in a long time. We should perform a code audit (see the code hasn't been refactored in a long time. We should perform a code audit (see
[confidential issue](../user/project/issues/confidential_issues.md) `https://gitlab.com/gitlab-org/gitlab/issues/20720`). [confidential issue](../user/project/issues/confidential_issues.md) `https://gitlab.com/gitlab-org/gitlab/-/issues/20720`).
to make sure its dynamic nature does not increase the number of security concerns. to make sure its dynamic nature does not increase the number of security concerns.
### Security in the code ### Security in the code
......
...@@ -448,7 +448,7 @@ Right now, GitLab cannot track a vulnerability if its location changes ...@@ -448,7 +448,7 @@ Right now, GitLab cannot track a vulnerability if its location changes
as new Git commits are pushed, and this results in user feedback being lost. as new Git commits are pushed, and this results in user feedback being lost.
For instance, user feedback on a SAST vulnerability is lost For instance, user feedback on a SAST vulnerability is lost
if the affected file is renamed or the affected line moves down. if the affected file is renamed or the affected line moves down.
This is addressed in [issue #7586](https://gitlab.com/gitlab-org/gitlab/issues/7586). This is addressed in [issue #7586](https://gitlab.com/gitlab-org/gitlab/-/issues/7586).
In some cases, the multiple scans executed in the same CI pipeline result in duplicates In some cases, the multiple scans executed in the same CI pipeline result in duplicates
that are automatically merged using the vulnerability location and identifiers. that are automatically merged using the vulnerability location and identifiers.
......
...@@ -76,7 +76,7 @@ and complete an intgration with the Secure stage. ...@@ -76,7 +76,7 @@ and complete an intgration with the Secure stage.
- Documentation for [Dependency Scanning reports](../../user/application_security/dependency_scanning/index.md#reports-json-format). - Documentation for [Dependency Scanning reports](../../user/application_security/dependency_scanning/index.md#reports-json-format).
- Documentation for [Container Scanning reports](../../user/application_security/container_scanning/index.md#reports-json-format). - Documentation for [Container Scanning reports](../../user/application_security/container_scanning/index.md#reports-json-format).
- See this [example secure job definition that also defines the artifact created](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml). - See this [example secure job definition that also defines the artifact created](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml).
- If you need a new kind of scan or report, [create an issue](https://gitlab.com/gitlab-org/gitlab/issues/new#) - If you need a new kind of scan or report, [create an issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new#)
and add the label `devops::secure`. and add the label `devops::secure`.
- Once the job is completed, the data can be seen: - Once the job is completed, the data can be seen:
- In the [Merge Request Security Report](../../user/project/merge_requests/index.md#security-reports-ultimate) ([MR Security Report data flow](https://gitlab.com/snippets/1910005#merge-request-view)). - In the [Merge Request Security Report](../../user/project/merge_requests/index.md#security-reports-ultimate) ([MR Security Report data flow](https://gitlab.com/snippets/1910005#merge-request-view)).
......
...@@ -5,9 +5,9 @@ Sometimes when a new resource type is added it's not clear if it should be only ...@@ -5,9 +5,9 @@ Sometimes when a new resource type is added it's not clear if it should be only
(similar to Issue, Epic, Merge Request, Snippet). (similar to Issue, Epic, Merge Request, Snippet).
The idea of Issue Types was first proposed in [this The idea of Issue Types was first proposed in [this
issue](https://gitlab.com/gitlab-org/gitlab/issues/8767) and its usage was issue](https://gitlab.com/gitlab-org/gitlab/-/issues/8767) and its usage was
discussed few times since then, for example in [incident discussed few times since then, for example in [incident
management](https://gitlab.com/gitlab-org/gitlab-foss/issues/55532). management](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/55532).
## What is an Issue Type ## What is an Issue Type
......
...@@ -193,7 +193,7 @@ in Puma/Unicorn threads. ...@@ -193,7 +193,7 @@ in Puma/Unicorn threads.
Often, GitLab needs to communicate with an external service such as Kubernetes Often, GitLab needs to communicate with an external service such as Kubernetes
clusters. In this case, it's hard to estimate when the external service finishes clusters. In this case, it's hard to estimate when the external service finishes
the requested process, for example, if it's a user-owned cluster that's inactive for some reason, the requested process, for example, if it's a user-owned cluster that's inactive for some reason,
GitLab might wait for the response forever ([Example](https://gitlab.com/gitlab-org/gitlab/issues/31475)). GitLab might wait for the response forever ([Example](https://gitlab.com/gitlab-org/gitlab/-/issues/31475)).
This could result in Puma/Unicorn timeout and should be avoided at all cost. This could result in Puma/Unicorn timeout and should be avoided at all cost.
You should set a reasonable timeout, gracefully handle exceptions and surface the You should set a reasonable timeout, gracefully handle exceptions and surface the
...@@ -210,7 +210,7 @@ as an open transaction basically blocks the release of a PostgreSQL backend conn ...@@ -210,7 +210,7 @@ as an open transaction basically blocks the release of a PostgreSQL backend conn
For keeping transaction as minimal as possible, please consider using `AfterCommitQueue` For keeping transaction as minimal as possible, please consider using `AfterCommitQueue`
module or `after_commit` AR hook. module or `after_commit` AR hook.
Here is [an example](https://gitlab.com/gitlab-org/gitlab/issues/36154#note_247228859) Here is [an example](https://gitlab.com/gitlab-org/gitlab/-/issues/36154#note_247228859)
that one request to Gitaly instance during transaction triggered a P1 issue. that one request to Gitaly instance during transaction triggered a P1 issue.
## Eager Loading ## Eager Loading
......
...@@ -611,7 +611,7 @@ end ...@@ -611,7 +611,7 @@ end
``` ```
If a computed update is needed, the value can be wrapped in `Arel.sql`, so Arel If a computed update is needed, the value can be wrapped in `Arel.sql`, so Arel
treats it as an SQL literal. It's also a required deprecation for [Rails 6](https://gitlab.com/gitlab-org/gitlab/issues/28497). treats it as an SQL literal. It's also a required deprecation for [Rails 6](https://gitlab.com/gitlab-org/gitlab/-/issues/28497).
The below example is the same as the one above, but The below example is the same as the one above, but
the value is set to the product of the `bar` and `baz` columns: the value is set to the product of the `bar` and `baz` columns:
......
...@@ -30,11 +30,11 @@ People are saying multiple inheritance is bad. Mixing multiple modules with ...@@ -30,11 +30,11 @@ People are saying multiple inheritance is bad. Mixing multiple modules with
multiple instance variables scattering everywhere suffer from the same issue. multiple instance variables scattering everywhere suffer from the same issue.
The same applies to `ActiveSupport::Concern`. See: The same applies to `ActiveSupport::Concern`. See:
[Consider replacing concerns with dedicated classes & composition]( [Consider replacing concerns with dedicated classes & composition](
https://gitlab.com/gitlab-org/gitlab/issues/16270) https://gitlab.com/gitlab-org/gitlab/-/issues/16270)
There's also a similar idea: There's also a similar idea:
[Use decorators and interface segregation to solve overgrowing models problem]( [Use decorators and interface segregation to solve overgrowing models problem](
https://gitlab.com/gitlab-org/gitlab/issues/14235) https://gitlab.com/gitlab-org/gitlab/-/issues/14235)
Note that `included` doesn't solve the whole issue. They define the Note that `included` doesn't solve the whole issue. They define the
dependencies, but they still allow each modules to talk implicitly via the dependencies, but they still allow each modules to talk implicitly via the
......
...@@ -25,7 +25,7 @@ by [`Namespaces#with_statistics`](https://gitlab.com/gitlab-org/gitlab/blob/4ab5 ...@@ -25,7 +25,7 @@ by [`Namespaces#with_statistics`](https://gitlab.com/gitlab-org/gitlab/blob/4ab5
Additionally, the pattern that is currently used to update the project statistics Additionally, the pattern that is currently used to update the project statistics
(the callback) doesn't scale adequately. It is currently one of the largest (the callback) doesn't scale adequately. It is currently one of the largest
[database queries transactions on production](https://gitlab.com/gitlab-org/gitlab/issues/29070) [database queries transactions on production](https://gitlab.com/gitlab-org/gitlab/-/issues/29070)
that takes the most time overall. We can't add one more query to it as that takes the most time overall. We can't add one more query to it as
it will increase the transaction's length. it will increase the transaction's length.
...@@ -142,7 +142,7 @@ but we refresh them through Sidekiq jobs and in different transactions: ...@@ -142,7 +142,7 @@ but we refresh them through Sidekiq jobs and in different transactions:
1. Create a second table (`namespace_aggregation_schedules`) with two columns `id` and `namespace_id`. 1. Create a second table (`namespace_aggregation_schedules`) with two columns `id` and `namespace_id`.
1. Whenever the statistics of a project changes, insert a row into `namespace_aggregation_schedules` 1. Whenever the statistics of a project changes, insert a row into `namespace_aggregation_schedules`
- We don't insert a new row if there's already one related to the root namespace. - We don't insert a new row if there's already one related to the root namespace.
- Keeping in mind the length of the transaction that involves updating `project_statistics`(<https://gitlab.com/gitlab-org/gitlab/issues/29070>), the insertion should be done in a different transaction and through a Sidekiq Job. - Keeping in mind the length of the transaction that involves updating `project_statistics`(<https://gitlab.com/gitlab-org/gitlab/-/issues/29070>), the insertion should be done in a different transaction and through a Sidekiq Job.
1. After inserting the row, we schedule another worker to be executed async at two different moments: 1. After inserting the row, we schedule another worker to be executed async at two different moments:
- One enqueued for immediate execution and another one scheduled in `1.5h` hours. - One enqueued for immediate execution and another one scheduled in `1.5h` hours.
- We only schedule the jobs, if we can obtain a `1.5h` lease on Redis on a key based on the root namespace ID. - We only schedule the jobs, if we can obtain a `1.5h` lease on Redis on a key based on the root namespace ID.
...@@ -162,7 +162,7 @@ This implementation has the following benefits: ...@@ -162,7 +162,7 @@ This implementation has the following benefits:
The only downside of this approach is that namespaces' statistics are updated up to `1.5` hours after the change is done, The only downside of this approach is that namespaces' statistics are updated up to `1.5` hours after the change is done,
which means there's a time window in which the statistics are inaccurate. Because we're still not which means there's a time window in which the statistics are inaccurate. Because we're still not
[enforcing storage limits](https://gitlab.com/gitlab-org/gitlab/issues/17664), this is not a major problem. [enforcing storage limits](https://gitlab.com/gitlab-org/gitlab/-/issues/17664), this is not a major problem.
## Conclusion ## Conclusion
...@@ -171,8 +171,8 @@ performant approach of aggregating the root namespaces. ...@@ -171,8 +171,8 @@ performant approach of aggregating the root namespaces.
All the details regarding this use case can be found on: All the details regarding this use case can be found on:
- <https://gitlab.com/gitlab-org/gitlab-foss/issues/62214> - <https://gitlab.com/gitlab-org/gitlab-foss/-/issues/62214>
- Merge Request with the implementation: <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/28996> - Merge Request with the implementation: <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/28996>
Performance of the namespace storage statistics were measured in staging and production (GitLab.com). All results were posted Performance of the namespace storage statistics were measured in staging and production (GitLab.com). All results were posted
on <https://gitlab.com/gitlab-org/gitlab-foss/issues/64092>: No problem has been reported so far. on <https://gitlab.com/gitlab-org/gitlab-foss/-/issues/64092>: No problem has been reported so far.
...@@ -10,7 +10,7 @@ not cover the way the code should be written. However, you can find a good examp ...@@ -10,7 +10,7 @@ not cover the way the code should be written. However, you can find a good examp
by looking at merge requests with Maven and NPM support: by looking at merge requests with Maven and NPM support:
- [NPM registry support](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8673). - [NPM registry support](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8673).
- [Conan repository](https://gitlab.com/gitlab-org/gitlab/issues/8248). - [Conan repository](https://gitlab.com/gitlab-org/gitlab/-/issues/8248).
- [Maven repository](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/6607). - [Maven repository](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/6607).
- [Instance level endpoint for Maven repository](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8757) - [Instance level endpoint for Maven repository](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8757)
...@@ -61,8 +61,8 @@ The current state of existing package registries availability is: ...@@ -61,8 +61,8 @@ The current state of existing package registries availability is:
| Repository Type | Project Level | Group Level | Instance Level | | Repository Type | Project Level | Group Level | Instance Level |
|-----------------|---------------|-------------|----------------| |-----------------|---------------|-------------|----------------|
| Maven | Yes | Yes | Yes | | Maven | Yes | Yes | Yes |
| Conan | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/11679) | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/11679) | Yes | | Conan | No - [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/11679) | No - [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/11679) | Yes |
| NPM | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/36853) | Yes | No - [open issue](https://gitlab.com/gitlab-org/gitlab/issues/36853) | | NPM | No - [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/36853) | Yes | No - [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/36853) |
| NuGet | Yes | No - [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/36423) | No | | NuGet | Yes | No - [open issue](https://gitlab.com/gitlab-org/gitlab/-/issues/36423) | No |
| PyPI | Yes | No | No | | PyPI | Yes | No | No |
......
...@@ -8,7 +8,7 @@ consistent performance of GitLab. ...@@ -8,7 +8,7 @@ consistent performance of GitLab.
The process of solving performance problems is roughly as follows: The process of solving performance problems is roughly as follows:
1. Make sure there's an issue open somewhere (for example, on the GitLab CE issue 1. Make sure there's an issue open somewhere (for example, on the GitLab CE issue
tracker), and create one if there is not. See [#15607](https://gitlab.com/gitlab-org/gitlab-foss/issues/15607) for an example. tracker), and create one if there is not. See [#15607](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/15607) for an example.
1. Measure the performance of the code in a production environment such as 1. Measure the performance of the code in a production environment such as
GitLab.com (see the [Tooling](#tooling) section below). Performance should be GitLab.com (see the [Tooling](#tooling) section below). Performance should be
measured over a period of _at least_ 24 hours. measured over a period of _at least_ 24 hours.
......
...@@ -534,7 +534,7 @@ the `gitlab-org/gitlab-foss` project. ...@@ -534,7 +534,7 @@ the `gitlab-org/gitlab-foss` project.
## Pre-clone step ## Pre-clone step
The `gitlab-org/gitlab` project on GitLab.com uses a [pre-clone step](https://gitlab.com/gitlab-org/gitlab/issues/39134) The `gitlab-org/gitlab` project on GitLab.com uses a [pre-clone step](https://gitlab.com/gitlab-org/gitlab/-/issues/39134)
to seed the project with a recent archive of the repository. This is done for to seed the project with a recent archive of the repository. This is done for
several reasons: several reasons:
......
...@@ -56,4 +56,4 @@ For more information see: ...@@ -56,4 +56,4 @@ For more information see:
- [`Poll-Interval` header](fe_guide/performance.md#realtime-components) - [`Poll-Interval` header](fe_guide/performance.md#realtime-components)
- [RFC 7232](https://tools.ietf.org/html/rfc7232) - [RFC 7232](https://tools.ietf.org/html/rfc7232)
- [ETag proposal](https://gitlab.com/gitlab-org/gitlab-foss/issues/26926) - [ETag proposal](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/26926)
...@@ -34,7 +34,7 @@ invalidated by a name change, it is better to include a hook that will expire ...@@ -34,7 +34,7 @@ invalidated by a name change, it is better to include a hook that will expire
the entry, instead of relying on the key changing. the entry, instead of relying on the key changing.
We don't use [Redis Cluster](https://redis.io/topics/cluster-tutorial) at the We don't use [Redis Cluster](https://redis.io/topics/cluster-tutorial) at the
moment, but may wish to in the future: [#118820](https://gitlab.com/gitlab-org/gitlab/issues/118820). moment, but may wish to in the future: [#118820](https://gitlab.com/gitlab-org/gitlab/-/issues/118820).
This imposes an additional constraint on naming: where GitLab is performing This imposes an additional constraint on naming: where GitLab is performing
operations that require several keys to be held on the same Redis server - for operations that require several keys to be held on the same Redis server - for
......
...@@ -27,7 +27,7 @@ transform them into structured links to the resources they represent. ...@@ -27,7 +27,7 @@ transform them into structured links to the resources they represent.
For example, the class For example, the class
[`Banzai::Filter::IssueReferenceFilter`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/banzai/filter/issue_reference_filter.rb) [`Banzai::Filter::IssueReferenceFilter`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/banzai/filter/issue_reference_filter.rb)
is responsible for handling references to issues, such as is responsible for handling references to issues, such as
`gitlab-org/gitlab#123` and `https://gitlab.com/gitlab-org/gitlab/issues/200048`. `gitlab-org/gitlab#123` and `https://gitlab.com/gitlab-org/gitlab/-/issues/200048`.
All reference filters are instances of [`HTML::Pipeline::Filter`](https://www.rubydoc.info/github/jch/html-pipeline/v1.11.0/HTML/Pipeline/Filter), All reference filters are instances of [`HTML::Pipeline::Filter`](https://www.rubydoc.info/github/jch/html-pipeline/v1.11.0/HTML/Pipeline/Filter),
and inherit (often indirectly) from [`Banzai::Filter::ReferenceFilter`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/banzai/filter/reference_filter.rb). and inherit (often indirectly) from [`Banzai::Filter::ReferenceFilter`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/banzai/filter/reference_filter.rb).
......
...@@ -150,7 +150,7 @@ limitation: ...@@ -150,7 +150,7 @@ limitation:
[Odyssey](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7776). [Odyssey](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7776).
On some Linux systems, it's possible to run [multiple PgBouncer instances on On some Linux systems, it's possible to run [multiple PgBouncer instances on
the same port](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4796). the same port](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/4796).
On GitLab.com, we run multiple PgBouncer instances on different ports to On GitLab.com, we run multiple PgBouncer instances on different ports to
avoid saturating a single core. avoid saturating a single core.
......
...@@ -23,7 +23,7 @@ For more information about the permission model at GitLab, please see [the GitLa ...@@ -23,7 +23,7 @@ For more information about the permission model at GitLab, please see [the GitLa
### Impact ### Impact
Improper permission handling can have significant impacts on the security of an application. Improper permission handling can have significant impacts on the security of an application.
Some situations may reveal [sensitive data](https://gitlab.com/gitlab-com/gl-infra/production/issues/477) or allow a malicious actor to perform [harmful actions](https://gitlab.com/gitlab-org/gitlab/issues/8180). Some situations may reveal [sensitive data](https://gitlab.com/gitlab-com/gl-infra/production/issues/477) or allow a malicious actor to perform [harmful actions](https://gitlab.com/gitlab-org/gitlab/-/issues/8180).
The overall impact depends heavily on what resources can be accessed or modified improperly. The overall impact depends heavily on what resources can be accessed or modified improperly.
A common vulnerability when permission checks are missing is called [IDOR](https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/05-Authorization_Testing/04-Testing_for_Insecure_Direct_Object_References) for Insecure Direct Object References. A common vulnerability when permission checks are missing is called [IDOR](https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/05-Authorization_Testing/04-Testing_for_Insecure_Direct_Object_References) for Insecure Direct Object References.
...@@ -82,7 +82,7 @@ This Ruby Regex specialty can have security impact, as often regular expressions ...@@ -82,7 +82,7 @@ This Ruby Regex specialty can have security impact, as often regular expressions
#### Examples #### Examples
GitLab specific examples can be found [here](https://gitlab.com/gitlab-org/gitlab/issues/36029#note_251262187) and [there](https://gitlab.com/gitlab-org/gitlab/issues/33569). GitLab specific examples can be found [here](https://gitlab.com/gitlab-org/gitlab/-/issues/36029#note_251262187) and [there](https://gitlab.com/gitlab-org/gitlab/-/issues/33569).
Another example would be this fictional Ruby On Rails controller: Another example would be this fictional Ruby On Rails controller:
...@@ -180,11 +180,11 @@ have been reported to GitLab include: ...@@ -180,11 +180,11 @@ have been reported to GitLab include:
- Network mapping of internal services - Network mapping of internal services
- This can help an attacker gather information about internal services - This can help an attacker gather information about internal services
that could be used in further attacks. [More details](https://gitlab.com/gitlab-org/gitlab-foss/issues/51327). that could be used in further attacks. [More details](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/51327).
- Reading internal services, including cloud service metadata. - Reading internal services, including cloud service metadata.
- The latter can be a serious problem, because an attacker can obtain keys that allow control of the victim's cloud infrastructure. (This is also a good reason - The latter can be a serious problem, because an attacker can obtain keys that allow control of the victim's cloud infrastructure. (This is also a good reason
to give only necessary privileges to the token.). [More details](https://gitlab.com/gitlab-org/gitlab-foss/issues/51490). to give only necessary privileges to the token.). [More details](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/51490).
- When combined with CRLF vulnerability, remote code execution. [More details](https://gitlab.com/gitlab-org/gitlab-foss/issues/41293) - When combined with CRLF vulnerability, remote code execution. [More details](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41293)
### When to Consider ### When to Consider
...@@ -308,7 +308,7 @@ Once you've [determined when and where](#setting-expectations) the user submitte ...@@ -308,7 +308,7 @@ Once you've [determined when and where](#setting-expectations) the user submitte
#### Content Security Policy #### Content Security Policy
- [Content Security Policy](https://www.youtube.com/watch?v=2VFavqfDS6w&t=12991s) - [Content Security Policy](https://www.youtube.com/watch?v=2VFavqfDS6w&t=12991s)
- [Use nonce-based Content Security Policy for inline JavaScript](https://gitlab.com/gitlab-org/gitlab-foss/issues/65330) - [Use nonce-based Content Security Policy for inline JavaScript](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/65330)
#### Free form input fields #### Free form input fields
...@@ -323,7 +323,7 @@ Once you've [determined when and where](#setting-expectations) the user submitte ...@@ -323,7 +323,7 @@ Once you've [determined when and where](#setting-expectations) the user submitte
### Select examples of past XSS issues affecting GitLab ### Select examples of past XSS issues affecting GitLab
- [Stored XSS in user status](https://gitlab.com/gitlab-org/gitlab-foss/issues/55320) - [Stored XSS in user status](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/55320)
### Developer Training ### Developer Training
......
...@@ -106,7 +106,7 @@ and ignore files starting with a period. To override this, use `-ln` flag to spe ...@@ -106,7 +106,7 @@ and ignore files starting with a period. To override this, use `-ln` flag to spe
NOTE: **Note:** NOTE: **Note:**
This is a work in progress. This is a work in progress.
It is an [ongoing effort](https://gitlab.com/gitlab-org/gitlab-foss/issues/64016) to evaluate different tools for the It is an [ongoing effort](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/64016) to evaluate different tools for the
automated testing of shell scripts (like [BATS](https://github.com/bats-core/bats-core)). automated testing of shell scripts (like [BATS](https://github.com/bats-core/bats-core)).
## Code Review ## Code Review
......
...@@ -395,7 +395,7 @@ in the default execution mode - using ...@@ -395,7 +395,7 @@ in the default execution mode - using
does not account for weights. does not account for weights.
As we are [moving towards using `sidekiq-cluster` in As we are [moving towards using `sidekiq-cluster` in
Core](https://gitlab.com/gitlab-org/gitlab/issues/34396), newly-added Core](https://gitlab.com/gitlab-org/gitlab/-/issues/34396), newly-added
workers do not need to have weights specified. They can simply use the workers do not need to have weights specified. They can simply use the
default weight, which is 1. default weight, which is 1.
......
...@@ -40,7 +40,7 @@ From [Snowplow's documentation](https://github.com/snowplow/snowplow), Snowplow ...@@ -40,7 +40,7 @@ From [Snowplow's documentation](https://github.com/snowplow/snowplow), Snowplow
## Snowplow schema ## Snowplow schema
We currently have many definitions of Snowplow's schema. We have an active issue to [standardize this schema](https://gitlab.com/gitlab-org/gitlab/issues/207930) including the following definitions: We currently have many definitions of Snowplow's schema. We have an active issue to [standardize this schema](https://gitlab.com/gitlab-org/gitlab/-/issues/207930) including the following definitions:
- Frontend and backend taxonomy as listed below - Frontend and backend taxonomy as listed below
- [Feature instrumentation taxonomy](https://about.gitlab.com/handbook/product/feature-instrumentation/#taxonomy) - [Feature instrumentation taxonomy](https://about.gitlab.com/handbook/product/feature-instrumentation/#taxonomy)
......
...@@ -91,7 +91,7 @@ point of failure and so the screenshot would not be captured at the right moment ...@@ -91,7 +91,7 @@ point of failure and so the screenshot would not be captured at the right moment
All tests expect to be able to log in at the start of the test. All tests expect to be able to log in at the start of the test.
For an example see: <https://gitlab.com/gitlab-org/gitlab/issues/34736> For an example see: <https://gitlab.com/gitlab-org/gitlab/-/issues/34736>
Ideally, any actions performed in an `after(:context)` (or [`before(:context)`](#limit-the-use-of-the-ui-in-beforecontext-and-after-hooks)) block would be performed via the API. But if it's necessary to do so via the UI (e.g., if API functionality doesn't exist), make sure to log out at the end of the block. Ideally, any actions performed in an `after(:context)` (or [`before(:context)`](#limit-the-use-of-the-ui-in-beforecontext-and-after-hooks)) block would be performed via the API. But if it's necessary to do so via the UI (e.g., if API functionality doesn't exist), make sure to log out at the end of the block.
......
...@@ -132,7 +132,7 @@ as well as these: ...@@ -132,7 +132,7 @@ as well as these:
| `QA_RSPEC_TAGS` | The RSpec tags to add (no default) | | `QA_RSPEC_TAGS` | The RSpec tags to add (no default) |
For now [manual jobs with custom variables will not use the same variable For now [manual jobs with custom variables will not use the same variable
when retried](https://gitlab.com/gitlab-org/gitlab/issues/31367), so if you want to run the same test(s) multiple times, when retried](https://gitlab.com/gitlab-org/gitlab/-/issues/31367), so if you want to run the same test(s) multiple times,
specify the same variables in each `custom-parallel` job (up to as specify the same variables in each `custom-parallel` job (up to as
many of the 10 available jobs that you want to run). many of the 10 available jobs that you want to run).
......
...@@ -54,15 +54,15 @@ For instance `RETRIES=1 bin/rspec ...` would retry the failing examples once. ...@@ -54,15 +54,15 @@ For instance `RETRIES=1 bin/rspec ...` would retry the failing examples once.
## Problems we had in the past at GitLab ## Problems we had in the past at GitLab
- [`rspec-retry` is biting us when some API specs fail](https://gitlab.com/gitlab-org/gitlab-foss/issues/29242): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9825> - [`rspec-retry` is biting us when some API specs fail](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/29242): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9825>
- [Sporadic RSpec failures due to `PG::UniqueViolation`](https://gitlab.com/gitlab-org/gitlab-foss/issues/28307#note_24958837): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9846> - [Sporadic RSpec failures due to `PG::UniqueViolation`](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/28307#note_24958837): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9846>
- Follow-up: <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10688> - Follow-up: <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10688>
- [Capybara.reset_session! should be called before requests are blocked](https://gitlab.com/gitlab-org/gitlab-foss/issues/33779): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12224> - [Capybara.reset_session! should be called before requests are blocked](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/33779): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12224>
- FFaker generates funky data that tests are not ready to handle (and tests should be predictable so that's bad!): - FFaker generates funky data that tests are not ready to handle (and tests should be predictable so that's bad!):
- [Make `spec/mailers/notify_spec.rb` more robust](https://gitlab.com/gitlab-org/gitlab-foss/issues/20121): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10015> - [Make `spec/mailers/notify_spec.rb` more robust](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/20121): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10015>
- [Transient failure in `spec/requests/api/commits_spec.rb`](https://gitlab.com/gitlab-org/gitlab-foss/issues/27988#note_25342521): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9944> - [Transient failure in `spec/requests/api/commits_spec.rb`](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/27988#note_25342521): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/9944>
- [Replace FFaker factory data with sequences](https://gitlab.com/gitlab-org/gitlab-foss/issues/29643): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10184> - [Replace FFaker factory data with sequences](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/29643): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10184>
- [Transient failure in spec/finders/issues_finder_spec.rb](https://gitlab.com/gitlab-org/gitlab-foss/issues/30211#note_26707685): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10404> - [Transient failure in spec/finders/issues_finder_spec.rb](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/30211#note_26707685): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10404>
### Time-sensitive flaky tests ### Time-sensitive flaky tests
...@@ -75,10 +75,10 @@ For instance `RETRIES=1 bin/rspec ...` would retry the failing examples once. ...@@ -75,10 +75,10 @@ For instance `RETRIES=1 bin/rspec ...` would retry the failing examples once.
### Feature tests ### Feature tests
- [Be sure to create all the data the test need before starting exercise](https://gitlab.com/gitlab-org/gitlab-foss/issues/32622#note_31128195): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12059> - [Be sure to create all the data the test need before starting exercise](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/32622#note_31128195): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12059>
- [Bis](https://gitlab.com/gitlab-org/gitlab-foss/issues/34609#note_34048715): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12604> - [Bis](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/34609#note_34048715): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12604>
- [Bis](https://gitlab.com/gitlab-org/gitlab-foss/issues/34698#note_34276286): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12664> - [Bis](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/34698#note_34276286): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12664>
- [Assert against the underlying database state instead of against a page's content](https://gitlab.com/gitlab-org/gitlab-foss/issues/31437): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10934> - [Assert against the underlying database state instead of against a page's content](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/31437): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10934>
- In JS tests, shifting elements can cause Capybara to misclick when the element moves at the exact time Capybara sends the click - In JS tests, shifting elements can cause Capybara to misclick when the element moves at the exact time Capybara sends the click
- [Dropdowns rendering upward or downward due to window size and scroll position](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17660) - [Dropdowns rendering upward or downward due to window size and scroll position](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17660)
- [Lazy loaded images can cause Capybara to misclick](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18713) - [Lazy loaded images can cause Capybara to misclick](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18713)
...@@ -87,12 +87,12 @@ For instance `RETRIES=1 bin/rspec ...` would retry the failing examples once. ...@@ -87,12 +87,12 @@ For instance `RETRIES=1 bin/rspec ...` would retry the failing examples once.
#### Capybara viewport size related issues #### Capybara viewport size related issues
- [Transient failure of spec/features/issues/filtered_search/filter_issues_spec.rb](https://gitlab.com/gitlab-org/gitlab-foss/issues/29241#note_26743936): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10411> - [Transient failure of spec/features/issues/filtered_search/filter_issues_spec.rb](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/29241#note_26743936): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10411>
#### Capybara JS driver related issues #### Capybara JS driver related issues
- [Don't wait for AJAX when no AJAX request is fired](https://gitlab.com/gitlab-org/gitlab-foss/issues/30461): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10454> - [Don't wait for AJAX when no AJAX request is fired](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/30461): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/10454>
- [Bis](https://gitlab.com/gitlab-org/gitlab-foss/issues/34647): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12626> - [Bis](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/34647): <https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12626>
#### PhantomJS / WebKit related issues #### PhantomJS / WebKit related issues
......
...@@ -801,9 +801,9 @@ Tests relevant for frontend development can be found at the following places: ...@@ -801,9 +801,9 @@ Tests relevant for frontend development can be found at the following places:
RSpec runs complete [feature tests](testing_levels.md#frontend-feature-tests), while the Jest and Karma directories contain [frontend unit tests](testing_levels.md#frontend-unit-tests), [frontend component tests](testing_levels.md#frontend-component-tests), and [frontend integration tests](testing_levels.md#frontend-integration-tests). RSpec runs complete [feature tests](testing_levels.md#frontend-feature-tests), while the Jest and Karma directories contain [frontend unit tests](testing_levels.md#frontend-unit-tests), [frontend component tests](testing_levels.md#frontend-component-tests), and [frontend integration tests](testing_levels.md#frontend-integration-tests).
All tests in `spec/javascripts/` will eventually be migrated to `spec/frontend/` (see also [#52483](https://gitlab.com/gitlab-org/gitlab-foss/issues/52483)). All tests in `spec/javascripts/` will eventually be migrated to `spec/frontend/` (see also [#52483](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/52483)).
Before May 2018, `features/` also contained feature tests run by Spinach. These tests were removed from the codebase in May 2018 ([#23036](https://gitlab.com/gitlab-org/gitlab-foss/issues/23036)). Before May 2018, `features/` also contained feature tests run by Spinach. These tests were removed from the codebase in May 2018 ([#23036](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/23036)).
See also [Notes on testing Vue components](../fe_guide/vue.md#testing-vue-components). See also [Notes on testing Vue components](../fe_guide/vue.md#testing-vue-components).
......
...@@ -321,7 +321,7 @@ kubectl get cm --sort-by='{.metadata.creationTimestamp}' | grep 'review-' | grep ...@@ -321,7 +321,7 @@ kubectl get cm --sort-by='{.metadata.creationTimestamp}' | grep 'review-' | grep
#### Finding the problem #### Finding the problem
[In the past](https://gitlab.com/gitlab-org/gitlab-foss/issues/62834), it happened [In the past](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/62834), it happened
that the `dns-gitlab-review-app-external-dns` Deployment was in a pending state, that the `dns-gitlab-review-app-external-dns` Deployment was in a pending state,
effectively preventing all the Review Apps from getting a DNS record assigned, effectively preventing all the Review Apps from getting a DNS record assigned,
making them unreachable via domain name. making them unreachable via domain name.
......
...@@ -366,7 +366,7 @@ See also: ...@@ -366,7 +366,7 @@ See also:
- The [RSpec testing guidelines](../testing_guide/best_practices.md#rspec). - The [RSpec testing guidelines](../testing_guide/best_practices.md#rspec).
- System / Feature tests in the [Testing Best Practices](best_practices.md#system--feature-tests). - System / Feature tests in the [Testing Best Practices](best_practices.md#system--feature-tests).
- [Issue #26159](https://gitlab.com/gitlab-org/gitlab/issues/26159) which aims at combining those guidelines with this page. - [Issue #26159](https://gitlab.com/gitlab-org/gitlab/-/issues/26159) which aims at combining those guidelines with this page.
```mermaid ```mermaid
graph RL graph RL
......
...@@ -183,7 +183,7 @@ Currently supported parents: ...@@ -183,7 +183,7 @@ Currently supported parents:
### Default stages ### Default stages
The [original implementation](https://gitlab.com/gitlab-org/gitlab/issues/847) of value stream analytics defined 7 stages. These stages are always available for each parent, however altering these stages is not possible. The [original implementation](https://gitlab.com/gitlab-org/gitlab/-/issues/847) of value stream analytics defined 7 stages. These stages are always available for each parent, however altering these stages is not possible.
To make things efficient and reduce the number of records created, the default stages are expressed as in-memory objects (not persisted). When the user creates a custom stage for the first time, all the stages will be persisted. This behavior is implemented in the value stream analytics service objects. To make things efficient and reduce the number of records created, the default stages are expressed as in-memory objects (not persisted). When the user creates a custom stage for the first time, all the stages will be persisted. This behavior is implemented in the value stream analytics service objects.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment