Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-23 15:11:54 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-23 15:11:54 +0300
commite10ea43772b9a6be150a074be7e26bfd6fa0380e (patch)
tree97bd1bb8fe3f656b5f2480d83b7dc9e369092d74 /doc
parent1f8c5a116bebd31650ef414c7b762ba91b8cc251 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc')
-rw-r--r--doc/administration/auth/ldap/google_secure_ldap.md2
-rw-r--r--doc/api/audit_events.md4
-rw-r--r--doc/api/groups.md5
-rw-r--r--doc/api/rest/index.md100
-rw-r--r--doc/ci/testing/test_coverage_visualization.md41
-rw-r--r--doc/topics/authentication/index.md6
-rw-r--r--doc/tutorials/create_compliance_pipeline.md177
-rw-r--r--doc/update/index.md6
-rw-r--r--doc/user/application_security/configuration/index.md2
-rw-r--r--doc/user/application_security/sast/index.md15
-rw-r--r--doc/user/group/compliance_frameworks.md7
11 files changed, 280 insertions, 85 deletions
diff --git a/doc/administration/auth/ldap/google_secure_ldap.md b/doc/administration/auth/ldap/google_secure_ldap.md
index e0612099221..7f5d60c5d6d 100644
--- a/doc/administration/auth/ldap/google_secure_ldap.md
+++ b/doc/administration/auth/ldap/google_secure_ldap.md
@@ -18,6 +18,8 @@ The steps below cover:
- Configuring the Secure LDAP Client in the Google administrator console.
- Required GitLab configuration.
+Secure LDAP is only available on specific Google Workspace editions. For more information, see the [Google Secure LDAP service documentation](https://support.google.com/a/answer/9048516).
+
## Configuring Google LDAP client
1. Go to <https://admin.google.com/Dashboard> and sign in as a Google Workspace domain administrator.
diff --git a/doc/api/audit_events.md b/doc/api/audit_events.md
index 3c4f80fd52d..c4b3d99c742 100644
--- a/doc/api/audit_events.md
+++ b/doc/api/audit_events.md
@@ -138,7 +138,7 @@ Example response:
## Group Audit Events
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/34078) in GitLab 12.5.
-> - [Support for keyset pagination added](https://gitlab.com/gitlab-org/gitlab/-/issues/333968) in GitLab 15.2.
+> - Support for keyset pagination [added](https://gitlab.com/gitlab-org/gitlab/-/issues/333968) in GitLab 15.2.
The Group Audit Events API allows you to retrieve [group audit events](../administration/audit_events.md#group-events).
This API cannot retrieve project audit events.
@@ -255,7 +255,7 @@ Example response:
## Project Audit Events
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/219238) in GitLab 13.1.
-> - [Support for keyset pagination added](https://gitlab.com/gitlab-org/gitlab/-/issues/367528) in GitLab 15.10.
+> - Support for keyset pagination [added](https://gitlab.com/gitlab-org/gitlab/-/issues/367528) in GitLab 15.10.
The Project Audit Events API allows you to retrieve [project audit events](../administration/audit_events.md#project-events).
diff --git a/doc/api/groups.md b/doc/api/groups.md
index 8c0e94ece28..3d25ced2163 100644
--- a/doc/api/groups.md
+++ b/doc/api/groups.md
@@ -521,11 +521,6 @@ To get the details of all projects within a group, use either the [list a group'
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/4"
```
-NOTE:
-There is [a known issue](https://gitlab.com/gitlab-org/gitlab/-/issues/345200) that can
-prevent `runners_token` from being returned when the call has the `with_projects=false`
-parameter.
-
This endpoint returns:
- All projects and shared projects in GitLab 12.5 and earlier.
diff --git a/doc/api/rest/index.md b/doc/api/rest/index.md
index 53c03b37332..2298eeb20a5 100644
--- a/doc/api/rest/index.md
+++ b/doc/api/rest/index.md
@@ -12,7 +12,7 @@ developers who are more comfortable with traditional API architecture.
## Compatibility guidelines
-The HTTP API is versioned with a single number, which is currently `4`. This number
+The HTTP API is versioned with a single number, which is `4`. This number
symbolizes the major version number, as described by [SemVer](https://semver.org/).
Because of this, backward-incompatible changes require this version number to
change.
@@ -83,9 +83,9 @@ authentication isn't provided. When authentication is not required, the document
for each endpoint specifies this. For example, the
[`/projects/:id` endpoint](../projects.md#get-single-project) does not require authentication.
-There are several ways you can authenticate with the GitLab API:
+You can authenticate with the GitLab API in several ways:
-- [OAuth2 tokens](#oauth2-tokens)
+- [OAuth 2.0 tokens](#oauth-20-tokens)
- [Personal access tokens](../../user/profile/personal_access_tokens.md)
- [Project access tokens](../../user/project/settings/project_access_tokens.md)
- [Group access tokens](../../user/group/settings/group_access_tokens.md)
@@ -116,30 +116,30 @@ NOTE:
Deploy tokens can't be used with the GitLab public API. For details, see
[Deploy Tokens](../../user/project/deploy_tokens/index.md).
-### OAuth2 tokens
+### OAuth 2.0 tokens
-You can use an [OAuth2 token](../oauth2.md) to authenticate with the API by passing
+You can use an [OAuth 2.0 token](../oauth2.md) to authenticate with the API by passing
it in either the `access_token` parameter or the `Authorization` header.
-Example of using the OAuth2 token in a parameter:
+Example of using the OAuth 2.0 token in a parameter:
```shell
curl "https://gitlab.example.com/api/v4/projects?access_token=OAUTH-TOKEN"
```
-Example of using the OAuth2 token in a header:
+Example of using the OAuth 2.0 token in a header:
```shell
curl --header "Authorization: Bearer OAUTH-TOKEN" "https://gitlab.example.com/api/v4/projects"
```
-Read more about [GitLab as an OAuth2 provider](../oauth2.md).
+Read more about [GitLab as an OAuth 2.0 provider](../oauth2.md).
NOTE:
-We recommend OAuth access tokens have an expiration. You can use the `refresh_token` parameter
+You should give OAuth access tokens an expiration. You can use the `refresh_token` parameter
to refresh tokens. Integrations may need to be updated to use refresh tokens prior to
expiration, which is based on the [`expires_in`](https://datatracker.ietf.org/doc/html/rfc6749#appendix-A.14)
-property in the token endpoint response. See [OAuth2 token](../oauth2.md) documentation
+property in the token endpoint response. See [OAuth 2.0 token](../oauth2.md) documentation
for examples requesting a new access token using a refresh token.
A default refresh setting of two hours is tracked in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/336598).
@@ -299,52 +299,52 @@ insight into what went wrong.
The following table gives an overview of how the API functions generally behave.
-| Request type | Description |
-|---------------|-------------|
-| `GET` | Access one or more resources and return the result as JSON. |
-| `POST` | Return `201 Created` if the resource is successfully created and return the newly created resource as JSON. |
-| `GET` / `PUT` | Return `200 OK` if the resource is accessed or modified successfully. The (modified) result is returned as JSON. |
+| Request type | Description |
+|:--------------|:--------------------------------------------------------------------------------------------------------------------------------|
+| `GET` | Access one or more resources and return the result as JSON. |
+| `POST` | Return `201 Created` if the resource is successfully created and return the newly created resource as JSON. |
+| `GET` / `PUT` | Return `200 OK` if the resource is accessed or modified successfully. The (modified) result is returned as JSON. |
| `DELETE` | Returns `204 No Content` if the resource was deleted successfully or `202 Accepted` if the resource is scheduled to be deleted. |
The following table shows the possible return codes for API requests.
-| Return values | Description |
-|--------------------------|-------------|
-| `200 OK` | The `GET`, `PUT` or `DELETE` request was successful, and the resource itself is returned as JSON. |
-| `201 Created` | The `POST` request was successful, and the resource is returned as JSON. |
-| `202 Accepted` | The `GET`, `PUT` or `DELETE` request was successful, and the resource is scheduled for processing. |
-| `204 No Content` | The server has successfully fulfilled the request, and there is no additional content to send in the response payload body. |
-| `304 Not Modified` | The resource hasn't been modified since the last request. |
-| `400 Bad Request` | A required attribute of the API request is missing. For example, the title of an issue is not given. |
-| `401 Unauthorized` | The user isn't authenticated. A valid [user token](#authentication) is necessary. |
-| `403 Forbidden` | The request isn't allowed. For example, the user isn't allowed to delete a project. |
-| `404 Not Found` | A resource couldn't be accessed. For example, an ID for a resource couldn't be found, or the user isn't authorized to access the resource. |
-| `405 Method Not Allowed` | The request isn't supported. |
-| `409 Conflict` | A conflicting resource already exists. For example, creating a project with a name that already exists. |
-| `412 Precondition Failed`| The request was denied. This can happen if the `If-Unmodified-Since` header is provided when trying to delete a resource, which was modified in between. |
-| `422 Unprocessable` | The entity couldn't be processed. |
-| `429 Too Many Requests` | The user exceeded the [application rate limits](../../administration/instance_limits.md#rate-limits). |
-| `500 Server Error` | While handling the request, something went wrong on the server. |
+| Return values | Description |
+|:--------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `200 OK` | The `GET`, `PUT` or `DELETE` request was successful, and the resource itself is returned as JSON. |
+| `201 Created` | The `POST` request was successful, and the resource is returned as JSON. |
+| `202 Accepted` | The `GET`, `PUT` or `DELETE` request was successful, and the resource is scheduled for processing. |
+| `204 No Content` | The server has successfully fulfilled the request, and there is no additional content to send in the response payload body. |
+| `304 Not Modified` | The resource hasn't been modified since the last request. |
+| `400 Bad Request` | A required attribute of the API request is missing. For example, the title of an issue is not given. |
+| `401 Unauthorized` | The user isn't authenticated. A valid [user token](#authentication) is necessary. |
+| `403 Forbidden` | The request isn't allowed. For example, the user isn't allowed to delete a project. |
+| `404 Not Found` | A resource couldn't be accessed. For example, an ID for a resource couldn't be found, or the user isn't authorized to access the resource. |
+| `405 Method Not Allowed` | The request isn't supported. |
+| `409 Conflict` | A conflicting resource already exists. For example, creating a project with a name that already exists. |
+| `412 Precondition Failed` | The request was denied. This can happen if the `If-Unmodified-Since` header is provided when trying to delete a resource, which was modified in between. |
+| `422 Unprocessable` | The entity couldn't be processed. |
+| `429 Too Many Requests` | The user exceeded the [application rate limits](../../administration/instance_limits.md#rate-limits). |
+| `500 Server Error` | While handling the request, something went wrong on the server. |
## Pagination
GitLab supports the following pagination methods:
-- Offset-based pagination. This is the default method and is available on all endpoints.
+- Offset-based pagination. The default method and available on all endpoints.
- Keyset-based pagination. Added to selected endpoints but being
[progressively rolled out](https://gitlab.com/groups/gitlab-org/-/epics/2039).
-For large collections, for performance reasons we recommend keyset pagination
-(when available) instead of offset pagination.
+For large collections, you should use keyset pagination
+(when available) instead of offset pagination, for performance reasons.
### Offset-based pagination
Sometimes, the returned result spans many pages. When listing resources, you can
pass the following parameters:
-| Parameter | Description |
-|------------|-------------|
-| `page` | Page number (default: `1`). |
+| Parameter | Description |
+|:-----------|:--------------------------------------------------------------|
+| `page` | Page number (default: `1`). |
| `per_page` | Number of items to list per page (default: `20`, max: `100`). |
In the following example, we list 50 [namespaces](../namespaces.md) per page:
@@ -397,14 +397,14 @@ x-total-pages: 3
GitLab also returns the following additional pagination headers:
-| Header | Description |
-|-----------------|-------------|
-| `x-next-page` | The index of the next page. |
+| Header | Description |
+|:----------------|:-----------------------------------------------|
+| `x-next-page` | The index of the next page. |
| `x-page` | The index of the current page (starting at 1). |
-| `x-per-page` | The number of items per page. |
-| `x-prev-page` | The index of the previous page. |
-| `x-total` | The total number of items. |
-| `x-total-pages` | The total number of pages. |
+| `x-per-page` | The number of items per page. |
+| `x-prev-page` | The index of the previous page. |
+| `x-total` | The total number of items. |
+| `x-total-pages` | The total number of pages. |
For GitLab.com users, [some pagination headers may not be returned](../../user/gitlab_com/index.md#pagination-response-headers).
@@ -476,21 +476,23 @@ When the end of the collection is reached and there are no additional
records to retrieve, the `Link` header is absent and the resulting array is
empty.
-We recommend using only the given link to retrieve the next page instead of
+You should use only the given link to retrieve the next page instead of
building your own URL. Apart from the headers shown, we don't expose additional
pagination headers.
+#### Supported resources
+
Keyset-based pagination is supported only for selected resources and ordering
options:
| Resource | Options | Availability |
|:------------------------------------------------------------------|:---------------------------------|:--------------------------------------------------------------------------------------------------------------|
-| [Projects](../projects.md) | `order_by=id` only | Authenticated and unauthenticated users |
+| [Group audit events](../audit_events.md#group-audit-events) | `order_by=id`, `sort=desc` only | Authenticated users only ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/333968) in GitLab 15.2) |
| [Groups](../groups.md) | `order_by=name`, `sort=asc` only | Unauthenticated users only |
| [Instance audit events](../audit_events.md#instance-audit-events) | `order_by=id`, `sort=desc` only | Authenticated users only ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/367528) in GitLab 15.11) |
-| [Group audit events](../audit_events.md#group-audit-events) | `order_by=id`, `sort=desc` only | Authenticated users only ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/333968) in GitLab 15.2) |
-| [Project audit events](../audit_events.md#project-audit-events) | `order_by=id`, `sort=desc` only | Authenticated users only ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/367528) in GitLab 15.10) |
| [Jobs](../jobs.md) | `order_by=id`, `sort=desc` only | Authenticated users only ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/362172) in GitLab 15.9) |
+| [Project audit events](../audit_events.md#project-audit-events) | `order_by=id`, `sort=desc` only | Authenticated users only ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/367528) in GitLab 15.10) |
+| [Projects](../projects.md) | `order_by=id` only | Authenticated and unauthenticated users |
### Pagination response headers
diff --git a/doc/ci/testing/test_coverage_visualization.md b/doc/ci/testing/test_coverage_visualization.md
index 1b29304d1af..52cdde88538 100644
--- a/doc/ci/testing/test_coverage_visualization.md
+++ b/doc/ci/testing/test_coverage_visualization.md
@@ -112,24 +112,14 @@ attempts to build the full path by:
#### Path correction example
-As an example, a project with:
+As an example, a C# project with:
-- A full path of `test-org/test-project`.
+- A full path of `test-org/test-cs-project`.
- The following files relative to the project root:
```shell
Auth/User.cs
Lib/Utils/User.cs
- src/main/java
- ```
-
-In the:
-
-- Cobertura XML, the `filename` attribute in the `class` element assumes the value is a relative
- path to the project's root:
-
- ```xml
- <class name="packet.name" filename="src/main/java" line-rate="0.0" branch-rate="0.0" complexity="5">
```
- `sources` from Cobertura XML, the following paths in the format
@@ -137,8 +127,8 @@ In the:
```xml
<sources>
- <source>/builds/test-org/test-project/Auth</source>
- <source>/builds/test-org/test-project/Lib/Utils</source>
+ <source>/builds/test-org/test-cs-project/Auth</source>
+ <source>/builds/test-org/test-cs-project/Lib/Utils</source>
</sources>
```
@@ -153,6 +143,29 @@ The parser:
100 iterations. If it reaches this limit without finding a matching path in the file tree, the
class is not included in the final coverage report.
+Automatic class path correction also works for a Java project with:
+
+- A full path of `test-org/test-java-project`.
+- The following files relative to the project root:
+
+ ```shell
+ src/main/java/com/gitlab/security_products/tests/App.java
+ ```
+
+- `sources` from Cobertura XML:
+
+ ```xml
+ <sources>
+ <source>/builds/test-org/test-java-project/src/main/java/</source>
+ </sources>
+ ```
+
+- `class` element with the `filename` value of `com/gitlab/security_products/tests/App.java`:
+
+ ```xml
+ <class name="com.gitlab.security_products.tests.App" filename="com/gitlab/security_products/tests/App.java" line-rate="0.0" branch-rate="0.0" complexity="6.0">
+ ```
+
NOTE:
Automatic class path correction only works on `source` paths in the format `<CI_BUILDS_DIR>/<PROJECT_FULL_PATH>/...`.
The `source` is ignored if the path does not follow this pattern. The parser assumes that the
diff --git a/doc/topics/authentication/index.md b/doc/topics/authentication/index.md
index 55a58377b76..a7611784284 100644
--- a/doc/topics/authentication/index.md
+++ b/doc/topics/authentication/index.md
@@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Authentication **(FREE)**
-This page gathers all the resources for the topic **Authentication** within GitLab.
+This page gathers all the resources for the topic **Authentication** in GitLab.
## GitLab users
@@ -17,7 +17,7 @@ This page gathers all the resources for the topic **Authentication** within GitL
- [Support for Universal 2nd Factor Authentication - YubiKeys](https://about.gitlab.com/blog/2016/06/22/gitlab-adds-support-for-u2f/)
- [Security Webcast with Yubico](https://about.gitlab.com/blog/2016/08/31/gitlab-and-yubico-security-webcast/)
- **Integrations:**
- - [GitLab as OAuth2 authentication service provider](../../integration/oauth_provider.md)
+ - [GitLab as OAuth 2.0 authentication service provider](../../integration/oauth_provider.md)
- [GitLab as OpenID Connect identity provider](../../integration/openid_connect_provider.md)
## GitLab administrators
@@ -38,7 +38,7 @@ This page gathers all the resources for the topic **Authentication** within GitL
## API
-- [OAuth 2 Tokens](../../api/rest/index.md#oauth2-tokens)
+- [OAuth 2.0 tokens](../../api/rest/index.md#oauth-20-tokens)
- [Personal access tokens](../../api/rest/index.md#personalprojectgroup-access-tokens)
- [Project access tokens](../../api/rest/index.md#personalprojectgroup-access-tokens)
- [Group access tokens](../../api/rest/index.md#personalprojectgroup-access-tokens)
diff --git a/doc/tutorials/create_compliance_pipeline.md b/doc/tutorials/create_compliance_pipeline.md
new file mode 100644
index 00000000000..382a7f3fa57
--- /dev/null
+++ b/doc/tutorials/create_compliance_pipeline.md
@@ -0,0 +1,177 @@
+---
+stage: Govern
+group: Compliance
+info: For assistance with this tutorial, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-other-projects-and-subjects.
+---
+
+# Tutorial: Create a compliance pipeline **(ULTIMATE)**
+
+You can use [compliance pipelines](../user/group/compliance_frameworks.md#compliance-pipelines) to ensure specific
+compliance-related jobs are run on pipelines for all projects in a group. Compliance pipelines are applied
+to projects through [compliance frameworks](../user/group/compliance_frameworks.md).
+
+In this tutorial, you:
+
+1. Create a [new group](#create-a-new-group).
+1. Create a [new project for the compliance pipeline configuration](#create-a-new-compliance-pipeline-project).
+1. Configure a [compliance framework](#configure-compliance-framework) to apply to other projects.
+1. Create a [new project and apply the compliance framework](#create-a-new-project-and-apply-the-compliance-framework) to it.
+1. Combine [compliance pipeline configuration and regular pipeline configuration](#combine-pipeline-configurations).
+
+Prerequisites:
+
+- Permission to create new top-level groups.
+
+## Create a new group
+
+Compliance frameworks are configured in top-level groups. In this tutorial, you create a top-level group that:
+
+- Contains two projects:
+ - The compliance pipeline project to store the compliance pipeline configuration.
+ - Another project that must run a job in its pipeline that is defined by the compliance pipeline configuration.
+- Has the compliance framework to apply to projects.
+
+To create the new group:
+
+1. On the top bar, select **Create new... > New group**.
+1. Select **Create group**.
+1. In the **Group name** field, enter `Tutorial group`.
+1. Select **Create group**.
+
+## Create a new compliance pipeline project
+
+Now you're ready to create a compliance pipeline project. This project contains the
+[compliance pipeline configuration](../user/group/compliance_frameworks.md#example-configuration) to apply to all
+projects with the compliance framework applied.
+
+To create the compliance pipeline project:
+
+1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
+1. Select **New project**.
+1. Select **Create blank project**.
+1. In the **Project name** field, enter `Tutorial compliance project`.
+1. Select **Create project**.
+
+To add compliance pipeline configuration to `Tutorial compliance project`:
+
+1. On the top bar, select **Main menu > Projects** and find the `Tutorial compliance project` project.
+1. On the left sidebar, select **CI/CD > Editor**.
+1. Select **Configure pipeline**.
+1. In the pipeline editor, replace the default configuration with:
+
+ ```yaml
+ ---
+ compliance-job:
+ script:
+ - echo "Running compliance job required for every project in this group..."
+ ```
+
+1. Select **Commit changes**.
+
+## Configure compliance framework
+
+The compliance framework is configured in the [new group](#create-a-new-group).
+
+To configure the compliance framework:
+
+1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
+1. On the left sidebar, select **Settings > General**.
+1. Expand **Compliance frameworks**.
+1. Select **Add framework**.
+1. In the **Name** field, enter `Tutorial compliance framework`.
+1. In the **Description** field, enter `Compliance framework for tutorial`.
+1. In the **Compliance pipeline configuration (optional)** field, enter
+ `.gitlab-ci.yml@tutorial-group/tutorial-compliance-project`.
+1. In the **Background color** field, select a color of your choice.
+1. Select **Add framework**.
+
+For convenience, make the new compliance framework the default for all new projects in the group:
+
+1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
+1. On the left sidebar, select **Settings > General**.
+1. Expand **Compliance frameworks**.
+1. In the row for `Tutorial compliance framework`, select **Options** (**{ellipsis_v}**).
+1. Select **Set default**.
+
+## Create a new project and apply the compliance framework
+
+Your compliance framework is ready, so you can now create projects in the group and they automatically run the
+compliance pipeline configuration in their pipelines.
+
+To create a new project for running the compliance pipeline configuration:
+
+1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
+1. Select **New project**.
+1. Select **Create blank project**.
+1. In the **Project name** field, enter `Tutorial project`.
+1. Select **Create project**.
+
+On the project page, notice the `Tutorial compliance framework` label appears because that was set as the default
+compliance framework for the group.
+
+Without any other pipeline configuration, `Tutorial project` can run the jobs defined in the compliance
+pipeline configuration in `Tutorial compliance project`.
+
+To run the compliance pipeline configuration in `Tutorial project`:
+
+1. On the top bar, select **Main menu > Projects** and find the `Tutorial project` project.
+1. Select **CI/CD Pipelines**.
+1. Select **Run pipeline**.
+1. On the **Run pipeline** page, select **Run pipeline**.
+
+Notice the pipeline runs a job called `compliance-job` in a **test** stage. Nice work, you've run your first compliance
+job!
+
+## Combine pipeline configurations
+
+If you want projects to run their own jobs as well as the compliance pipeline jobs, you must combine the compliance
+pipeline configuration and the regular pipeline configuration of the project.
+
+To combine the pipeline configurations, you must define the regular pipeline configuration and then update the
+compliance pipeline configuration to refer to it.
+
+To create the regular pipeline configuration:
+
+1. On the top bar, select **Main menu > Projects** and find the `Tutorial project` project.
+1. On the left sidebar, select **CI/CD > Editor**.
+1. Select **Configure pipeline**.
+1. In the pipeline editor, replace the default configuration with:
+
+ ```yaml
+ ---
+ project-job:
+ script:
+ - echo "Running project job..."
+ ```
+
+1. Select **Commit changes**.
+
+To combine the new project pipeline configuration with the compliance pipeline configuration:
+
+1. On the top bar, select **Main menu > Projects** and find the `Tutorial compliance project` project.
+1. On the left sidebar, select **CI/CD > Editor**.
+1. In the existing configuration, add:
+
+ ```yaml
+ include:
+ - project: 'tutorial-group/tutorial-project'
+ file: '.gitlab-ci.yml'
+ ```
+
+1. Select **Commit changes**.
+
+To confirm the regular pipeline configuration is combined with the compliance pipeline configuration:
+
+1. On the top bar, select **Main menu > Projects** and find the `Tutorial project` project.
+1. Select **CI/CD Pipelines**.
+1. Select **Run pipeline**.
+1. On the **Run pipeline** page, select **Run pipeline**.
+
+Notice the pipeline runs two jobs in a **test** stage:
+
+- `compliance-job`.
+- `project-job`.
+
+Congratulations, you've created and configured a compliance pipeline!
+
+See more [example compliance pipeline configurations](../user/group/compliance_frameworks.md#example-configuration).
diff --git a/doc/update/index.md b/doc/update/index.md
index 762bb6c8765..0c1297b4524 100644
--- a/doc/update/index.md
+++ b/doc/update/index.md
@@ -264,6 +264,12 @@ NOTE:
Specific information that follow related to Ruby and Git versions do not apply to [Omnibus installations](https://docs.gitlab.com/omnibus/)
and [Helm Chart deployments](https://docs.gitlab.com/charts/). They come with appropriate Ruby and Git versions and are not using system binaries for Ruby and Git. There is no need to install Ruby or Git when utilizing these two approaches.
+### 16.0.0
+
+- Sidekiq jobs are only routed to `default` and `mailers` queues by default, and as a result,
+ every Sidekiq process also listens to those queues to ensure all jobs are processed across
+ all queues. This behavior does not apply if you have configured the [routing rules](../administration/sidekiq/processing_specific_job_classes.md#routing-rules).
+
### 15.10.0
- Gitaly configuration changes significantly in Omnibus GitLab 16.0. You can begin migrating to the new structure in Omnibus GitLab 15.10 while backwards compatibility is
diff --git a/doc/user/application_security/configuration/index.md b/doc/user/application_security/configuration/index.md
index 380624c91ce..d5a05477ddf 100644
--- a/doc/user/application_security/configuration/index.md
+++ b/doc/user/application_security/configuration/index.md
@@ -51,7 +51,7 @@ You can configure the following security controls:
- [Static Application Security Testing](../sast/index.md) (SAST)
- Select **Enable SAST** to configure SAST for the current project.
- For more details, read [Configure SAST in the UI](../sast/index.md#configure-sast-in-the-ui).
+ For more details, read [Configure SAST in the UI](../sast/index.md#configure-sast-by-using-the-ui).
- [Dynamic Application Security Testing](../dast/index.md) (DAST)
- Select **Enable DAST** to configure DAST for the current project.
- Select **Manage scans** to manage the saved DAST scans, site profiles, and scanner profiles.
diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md
index a0c5adc89f5..82ceaad244d 100644
--- a/doc/user/application_security/sast/index.md
+++ b/doc/user/application_security/sast/index.md
@@ -238,7 +238,7 @@ as shown in the following table:
| See new findings in merge request widget | **{dotted-circle}** | **{check-circle}** |
| [Manage vulnerabilities](../vulnerabilities/index.md) | **{dotted-circle}** | **{check-circle}** |
| [Access the Security Dashboard](../security_dashboard/index.md) | **{dotted-circle}** | **{check-circle}** |
-| [Configure SAST in the UI](#configure-sast-in-the-ui) | **{dotted-circle}** | **{check-circle}** |
+| [Configure SAST by using the UI](#configure-sast-by-using-the-ui) | **{dotted-circle}** | **{check-circle}** |
| [Customize SAST rulesets](customize_rulesets.md) | **{dotted-circle}** | **{check-circle}** |
| [Detect False Positives](#false-positive-detection) | **{dotted-circle}** | **{check-circle}** |
| [Track moved vulnerabilities](#advanced-vulnerability-tracking) | **{dotted-circle}** | **{check-circle}** |
@@ -257,7 +257,7 @@ To configure SAST for a project you can:
- Use [Auto SAST](../../../topics/autodevops/stages.md#auto-sast), provided by
[Auto DevOps](../../../topics/autodevops/index.md).
- [Configure SAST in your CI/CD YAML](#configure-sast-in-your-cicd-yaml).
-- [Configure SAST using the UI](#configure-sast-in-the-ui) (introduced in GitLab 13.3).
+- [Configure SAST by using the UI](#configure-sast-by-using-the-ui).
You can enable SAST across many projects by [enforcing scan execution](../index.md#enforce-scan-execution).
@@ -282,15 +282,12 @@ The results are saved as a
that you can later download and analyze.
When downloading, you always receive the most recent SAST artifact available.
-### Configure SAST in the UI
+### Configure SAST by using the UI
-You can enable and configure SAST in the UI, either with default settings, or with customizations.
+You can enable and configure SAST by using the UI, either with the default settings or with customizations.
The method you can use depends on your GitLab license tier.
-- [Configure SAST in the UI with customizations](#configure-sast-in-the-ui-with-customizations). **(ULTIMATE)**
-- [Configure SAST in the UI with default settings only](#configure-sast-in-the-ui-with-default-settings-only).
-
-### Configure SAST in the UI with customizations **(ULTIMATE)**
+#### Configure SAST with customizations **(ULTIMATE)**
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/3659) in GitLab 13.3.
> - [Improved](https://gitlab.com/gitlab-org/gitlab/-/issues/232862) in GitLab 13.4.
@@ -319,7 +316,7 @@ To enable and configure SAST with customizations:
Pipelines now include a SAST job.
-### Configure SAST in the UI with default settings only
+#### Configure SAST with default settings only
> [Introduced](https://about.gitlab.com/releases/2021/02/22/gitlab-13-9-released/#security-configuration-page-for-all-users) in GitLab 13.9
diff --git a/doc/user/group/compliance_frameworks.md b/doc/user/group/compliance_frameworks.md
index 4ea474069cd..2ca767bc678 100644
--- a/doc/user/group/compliance_frameworks.md
+++ b/doc/user/group/compliance_frameworks.md
@@ -108,8 +108,11 @@ However, the compliance pipeline configuration can reference the `.gitlab-ci.yml
- Jobs and variables defined in the compliance pipeline can't be changed by variables in the labeled project's
`.gitlab-ci.yml` file.
-See [example configuration](#example-configuration) for help configuring a compliance pipeline that runs jobs from
-labeled project pipeline configuration.
+For more information, see:
+
+- [Example configuration](#example-configuration) for help configuring a compliance pipeline that runs jobs from
+ labeled project pipeline configuration.
+- The [Create a compliance pipeline](../../tutorials/create_compliance_pipeline.md) tutorial.
### Effect on labeled projects