summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-28 00:09:08 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-28 00:09:08 +0000
commitf54a50aa826d0eedcf2e56f51462613bc132f826 (patch)
tree7194aca23f9af822ea55966a6f477b3d8d68ee47 /doc
parentc77fda905a8619b756163c10a75171dc9cfe7084 (diff)
downloadgitlab-ce-f54a50aa826d0eedcf2e56f51462613bc132f826.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc')
-rw-r--r--doc/administration/incoming_email.md67
-rw-r--r--doc/administration/instance_limits.md18
-rw-r--r--doc/api/README.md12
-rw-r--r--doc/api/epic_links.md10
-rw-r--r--doc/api/feature_flags.md8
-rw-r--r--doc/api/issues_statistics.md2
-rw-r--r--doc/api/members.md2
-rw-r--r--doc/api/oauth2.md14
-rw-r--r--doc/api/packages.md10
-rw-r--r--doc/api/pipeline_schedules.md18
-rw-r--r--doc/api/pipelines.md28
-rw-r--r--doc/api/project_aliases.md18
-rw-r--r--doc/api/project_badges.md12
-rw-r--r--doc/api/project_clusters.md4
-rw-r--r--doc/api/project_level_variables.md20
-rw-r--r--doc/api/project_snippets.md14
-rw-r--r--doc/api/project_statistics.md2
-rw-r--r--doc/api/project_templates.md5
-rw-r--r--doc/api/projects.md76
-rw-r--r--doc/api/protected_branches.md12
-rw-r--r--doc/api/protected_environments.md2
-rw-r--r--doc/api/protected_tags.md10
-rw-r--r--doc/ci/environments.md6
-rw-r--r--doc/ci/img/environments_deployment_cluster_v12_8.pngbin0 -> 58639 bytes
-rw-r--r--doc/security/webhooks.md3
-rw-r--r--doc/topics/autodevops/index.md28
-rw-r--r--doc/user/gitlab_com/index.md7
-rw-r--r--doc/user/project/clusters/index.md22
-rw-r--r--doc/user/project/integrations/webhooks.md29
29 files changed, 258 insertions, 201 deletions
diff --git a/doc/administration/incoming_email.md b/doc/administration/incoming_email.md
index 6a0249d85d8..dcc590bea9c 100644
--- a/doc/administration/incoming_email.md
+++ b/doc/administration/incoming_email.md
@@ -283,10 +283,17 @@ incoming_email:
idle_timeout: 60
```
-#### MS Exchange
+#### Microsoft Exchange Server
-Example configuration for Microsoft Exchange mail server with IMAP enabled. Assumes the
-catch-all mailbox incoming@exchange.example.com.
+Example configurations for Microsoft Exchange Server with IMAP enabled. Since
+Exchange does not support sub-addressing, only two options exist:
+
+- Catch-all mailbox (recommended for Exchange-only)
+- Dedicated email address (supports Reply by Email only)
+
+##### Catch-all mailbox
+
+Assumes the catch-all mailbox `incoming@exchange.example.com`.
Example for Omnibus installs:
@@ -335,11 +342,53 @@ incoming_email:
port: 993
# Whether the IMAP server uses SSL
ssl: true
- # Whether the IMAP server uses StartTLS
- start_tls: false
+```
- # The mailbox where incoming mail will end up. Usually "inbox".
- mailbox: "inbox"
- # The IDLE command timeout.
- idle_timeout: 60
+##### Dedicated email address
+
+Assumes the dedicated email address `incoming@exchange.example.com`.
+
+Example for Omnibus installs:
+
+```ruby
+gitlab_rails['incoming_email_enabled'] = true
+
+# Exchange does not support sub-addressing, and we're not using a catch-all mailbox so %{key} is not used here
+gitlab_rails['incoming_email_address'] = "incoming@exchange.example.com"
+
+# Email account username
+# Typically this is the userPrincipalName (UPN)
+gitlab_rails['incoming_email_email'] = "incoming@ad-domain.example.com"
+# Email account password
+gitlab_rails['incoming_email_password'] = "[REDACTED]"
+
+# IMAP server host
+gitlab_rails['incoming_email_host'] = "exchange.example.com"
+# IMAP server port
+gitlab_rails['incoming_email_port'] = 993
+# Whether the IMAP server uses SSL
+gitlab_rails['incoming_email_ssl'] = true
+```
+
+Example for source installs:
+
+```yaml
+incoming_email:
+ enabled: true
+
+ # Exchange does not support sub-addressing, and we're not using a catch-all mailbox so %{key} is not used here
+ address: "incoming@exchange.example.com"
+
+ # Email account username
+ # Typically this is the userPrincipalName (UPN)
+ user: "incoming@ad-domain.example.com"
+ # Email account password
+ password: "[REDACTED]"
+
+ # IMAP server host
+ host: "exchange.example.com"
+ # IMAP server port
+ port: 993
+ # Whether the IMAP server uses SSL
+ ssl: true
```
diff --git a/doc/administration/instance_limits.md b/doc/administration/instance_limits.md
index f4f70995731..9c64453dadd 100644
--- a/doc/administration/instance_limits.md
+++ b/doc/administration/instance_limits.md
@@ -37,23 +37,9 @@ Activity history for projects and individuals' profiles was limited to one year
## Number of webhooks
-A maximum number of webhooks applies to each GitLab.com tier. Limits apply to project and group webhooks.
+On GitLab.com, the [maximum number of webhooks](../user/gitlab_com/index.md#maximum-number-of-webhooks) per project, and per group, is limited.
-### Project Webhooks
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20730) in GitLab 12.6.
-
-Check the [Maximum number of project webhooks (per tier)](../user/project/integrations/webhooks.md#maximum-number-of-project-webhooks-per-tier) section in the Webhooks page.
-
-### Group Webhooks
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25129) in GitLab 12.9.
-
-Check the [Maximum number of group webhooks (per tier)](../user/project/integrations/webhooks.md#maximum-number-of-group-webhooks-per-tier) section in the Webhooks page.
-
-### Setting the limit on a self-hosted installation
-
-To set this limit on a self-hosted installation, run the following in the
+To set this limit on a self-managed installation, run the following in the
[GitLab Rails console](https://docs.gitlab.com/omnibus/maintenance/#starting-a-rails-console-session):
```ruby
diff --git a/doc/api/README.md b/doc/api/README.md
index a261e1e7dc6..639d5067dd7 100644
--- a/doc/api/README.md
+++ b/doc/api/README.md
@@ -260,7 +260,7 @@ returned with status code `404`:
Example of a valid API call and a request using cURL with sudo request,
providing a username:
-```
+```plaintext
GET /projects?private_token=<your_access_token>&sudo=username
```
@@ -271,7 +271,7 @@ curl --header "Private-Token: <your_access_token>" --header "Sudo: username" "ht
Example of a valid API call and a request using cURL with sudo request,
providing an ID:
-```
+```plaintext
GET /projects?private_token=<your_access_token>&sudo=23
```
@@ -444,7 +444,7 @@ URL-encoded.
For example, `/` is represented by `%2F`:
-```
+```plaintext
GET /api/v4/projects/diaspora%2Fdiaspora
```
@@ -460,7 +460,7 @@ URL-encoded.
For example, `/` is represented by `%2F`:
-```
+```plaintext
GET /api/v4/projects/1/branches/my%2Fbranch/commits
```
@@ -604,13 +604,13 @@ to a [W3 recommendation](http://www.w3.org/Addressing/URL/4_URI_Recommentations.
causes a `+` to be interpreted as a space. For example, in an ISO 8601 date, you may want to pass
a time in Mountain Standard Time, such as:
-```
+```plaintext
2017-10-17T23:11:13.000+05:30
```
The correct encoding for the query parameter would be:
-```
+```plaintext
2017-10-17T23:11:13.000%2B05:30
```
diff --git a/doc/api/epic_links.md b/doc/api/epic_links.md
index 0e2fb2653c4..5df91e106eb 100644
--- a/doc/api/epic_links.md
+++ b/doc/api/epic_links.md
@@ -15,7 +15,7 @@ Epics are available only in the [Ultimate/Gold tier](https://about.gitlab.com/pr
Gets all child epics of an epic.
-```
+```plaintext
GET /groups/:id/epics/:epic_iid/epics
```
@@ -69,7 +69,7 @@ Example response:
Creates an association between two epics, designating one as the parent epic and the other as the child epic. A parent epic can have multiple child epics. If the new child epic already belonged to another epic, it is unassigned from that previous parent.
-```
+```plaintext
POST /groups/:id/epics/:epic_iid/epics
```
@@ -122,7 +122,7 @@ Example response:
Creates a a new epic and associates it with provided parent epic. The response is LinkedEpic object.
-```
+```plaintext
POST /groups/:id/epics/:epic_iid/epics
```
@@ -155,7 +155,7 @@ Example response:
## Re-order a child epic
-```
+```plaintext
PUT /groups/:id/epics/:epic_iid/epics/:child_epic_id
```
@@ -212,7 +212,7 @@ Example response:
Unassigns a child epic from a parent epic.
-```
+```plaintext
DELETE /groups/:id/epics/:epic_iid/epics/:child_epic_id
```
diff --git a/doc/api/feature_flags.md b/doc/api/feature_flags.md
index 384708be5df..f95eb31c84c 100644
--- a/doc/api/feature_flags.md
+++ b/doc/api/feature_flags.md
@@ -15,7 +15,7 @@ are [paginated](README.md#pagination).
Gets all feature flags of the requested project.
-```
+```plaintext
GET /projects/:id/feature_flags
```
@@ -145,7 +145,7 @@ Example response:
Creates a new feature flag.
-```
+```plaintext
POST /projects/:id/feature_flags
```
@@ -219,7 +219,7 @@ Example response:
Gets a single feature flag.
-```
+```plaintext
GET /projects/:id/feature_flags/:name
```
@@ -294,7 +294,7 @@ Example response:
Deletes a feature flag.
-```
+```plaintext
DELETE /projects/:id/feature_flags/:name
```
diff --git a/doc/api/issues_statistics.md b/doc/api/issues_statistics.md
index b24e385c3de..cb8379aba64 100644
--- a/doc/api/issues_statistics.md
+++ b/doc/api/issues_statistics.md
@@ -123,7 +123,7 @@ Example response:
Gets issues count statistics for given project.
-```
+```plaintext
GET /projects/:id/issues_statistics
GET /projects/:id/issues_statistics?labels=foo
GET /projects/:id/issues_statistics?labels=foo,bar
diff --git a/doc/api/members.md b/doc/api/members.md
index 47f2d694006..69c52a54a8d 100644
--- a/doc/api/members.md
+++ b/doc/api/members.md
@@ -4,7 +4,7 @@
The access levels are defined in the `Gitlab::Access` module. Currently, these levels are recognized:
-```
+```plaintext
10 => Guest access
20 => Reporter access
30 => Developer access
diff --git a/doc/api/oauth2.md b/doc/api/oauth2.md
index 1991ad4bd14..50452b61c99 100644
--- a/doc/api/oauth2.md
+++ b/doc/api/oauth2.md
@@ -112,7 +112,7 @@ easily accessible, therefore secrets can leak easily.
To request the access token, you should redirect the user to the
`/oauth/authorize` endpoint using `token` response type:
-```
+```plaintext
https://gitlab.example.com/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=token&state=YOUR_UNIQUE_STATE_HASH&scope=REQUESTED_SCOPES
```
@@ -124,7 +124,7 @@ would request `read_user` and `profile` scopes). The redirect
will include a fragment with `access_token` as well as token details in GET
parameters, for example:
-```
+```plaintext
http://myapp.com/oauth/redirect#access_token=ABCDExyz123&state=YOUR_UNIQUE_STATE_HASH&token_type=bearer&expires_in=3600
```
@@ -182,7 +182,7 @@ curl --data "@auth.txt" --request POST https://gitlab.example.com/oauth/token
Then, you'll receive the access token back in the response:
-```
+```json
{
"access_token": "1f0af717251950dbd4d73154fdf0a474a5c5119adad999683f5b450c460726aa",
"token_type": "bearer",
@@ -192,7 +192,7 @@ Then, you'll receive the access token back in the response:
For testing, you can use the `oauth2` Ruby gem:
-```
+```ruby
client = OAuth2::Client.new('the_client_id', 'the_client_secret', :site => "http://example.com")
access_token = client.password.get_token('user@example.com', 'secret')
puts access_token.token
@@ -203,13 +203,13 @@ puts access_token.token
The `access token` allows you to make requests to the API on behalf of a user.
You can pass the token either as GET parameter:
-```
+```plaintext
GET https://gitlab.example.com/api/v4/user?access_token=OAUTH-TOKEN
```
or you can put the token to the Authorization header:
-```
+```shell
curl --header "Authorization: Bearer OAUTH-TOKEN" https://gitlab.example.com/api/v4/user
```
@@ -222,7 +222,7 @@ You must supply the access token, either:
- As a parameter:
- ```
+ ```plaintext
GET https://gitlab.example.com/oauth/token/info?access_token=<OAUTH-TOKEN>
```
diff --git a/doc/api/packages.md b/doc/api/packages.md
index e04cb44538a..097f9dff84e 100644
--- a/doc/api/packages.md
+++ b/doc/api/packages.md
@@ -11,7 +11,7 @@ This is the API docs of [GitLab Packages](../administration/packages/index.md).
Get a list of project packages. All package types are included in results. When
accessed without authentication, only packages of public projects are returned.
-```
+```plaintext
GET /projects/:id/packages
```
@@ -56,7 +56,7 @@ By default, the `GET` request will return 20 results, since the API is [paginate
Get a list of project packages at the group level.
When accessed without authentication, only packages of public projects are returned.
-```
+```plaintext
GET /groups/:id/packages
```
@@ -135,7 +135,7 @@ The `_links` object contains the following properties:
Get a single project package.
-```
+```plaintext
GET /projects/:id/packages/:package_id
```
@@ -186,7 +186,7 @@ The `_links` object contains the following properties:
Get a list of package files of a single package.
-```
+```plaintext
GET /projects/:id/packages/:package_id/package_files
```
@@ -241,7 +241,7 @@ By default, the `GET` request will return 20 results, since the API is [paginate
Deletes a project package.
-```
+```plaintext
DELETE /projects/:id/packages/:package_id
```
diff --git a/doc/api/pipeline_schedules.md b/doc/api/pipeline_schedules.md
index 3624921fde7..9ff641fc552 100644
--- a/doc/api/pipeline_schedules.md
+++ b/doc/api/pipeline_schedules.md
@@ -6,7 +6,7 @@ You can read more about [pipeline schedules](../user/project/pipelines/schedules
Get a list of the pipeline schedules of a project.
-```
+```plaintext
GET /projects/:id/pipeline_schedules
```
@@ -47,7 +47,7 @@ curl --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" "https://gitlab.example.com/
Get the pipeline schedule of a project.
-```
+```plaintext
GET /projects/:id/pipeline_schedules/:pipeline_schedule_id
```
@@ -99,7 +99,7 @@ curl --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" "https://gitlab.example.com/
Create a new pipeline schedule of a project.
-```
+```plaintext
POST /projects/:id/pipeline_schedules
```
@@ -143,7 +143,7 @@ curl --request POST --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" --form descri
Updates the pipeline schedule of a project. Once the update is done, it will be rescheduled automatically.
-```
+```plaintext
PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id
```
@@ -193,7 +193,7 @@ curl --request PUT --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" --form cron="0
Update the owner of the pipeline schedule of a project.
-```
+```plaintext
POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/take_ownership
```
@@ -238,7 +238,7 @@ curl --request POST --header "PRIVATE-TOKEN: hf2CvZXB9w8Uc5pZKpSB" "https://gitl
Delete the pipeline schedule of a project.
-```
+```plaintext
DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id
```
@@ -317,7 +317,7 @@ Example response:
Create a new variable of a pipeline schedule.
-```
+```plaintext
POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables
```
@@ -345,7 +345,7 @@ curl --request POST --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" --form "key=N
Updates the variable of a pipeline schedule.
-```
+```plaintext
PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key
```
@@ -373,7 +373,7 @@ curl --request PUT --header "PRIVATE-TOKEN: k5ESFgWY2Qf5xEvDcFxZ" --form "value=
Delete the variable of a pipeline schedule.
-```
+```plaintext
DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key
```
diff --git a/doc/api/pipelines.md b/doc/api/pipelines.md
index a3835045e5c..67d9348ba92 100644
--- a/doc/api/pipelines.md
+++ b/doc/api/pipelines.md
@@ -4,7 +4,7 @@
> [Introduced][ce-5837] in GitLab 8.11
-```
+```plaintext
GET /projects/:id/pipelines
```
@@ -23,7 +23,7 @@ GET /projects/:id/pipelines
| `order_by`| string | no | Order pipelines by `id`, `status`, `ref`, `updated_at` or `user_id` (default: `id`) |
| `sort` | string | no | Sort pipelines in `asc` or `desc` order (default: `desc`) |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/pipelines"
```
@@ -56,7 +56,7 @@ Example of response
> [Introduced][ce-5837] in GitLab 8.11
-```
+```plaintext
GET /projects/:id/pipelines/:pipeline_id
```
@@ -65,7 +65,7 @@ GET /projects/:id/pipelines/:pipeline_id
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `pipeline_id` | integer | yes | The ID of a pipeline |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/pipelines/46"
```
@@ -101,7 +101,7 @@ Example of response
### Get variables of a pipeline
-```
+```plaintext
GET /projects/:id/pipelines/:pipeline_id/variables
```
@@ -110,7 +110,7 @@ GET /projects/:id/pipelines/:pipeline_id/variables
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `pipeline_id` | integer | yes | The ID of a pipeline |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/pipelines/46/variables"
```
@@ -134,7 +134,7 @@ Example of response
> [Introduced][ce-7209] in GitLab 8.14
-```
+```plaintext
POST /projects/:id/pipeline
```
@@ -144,7 +144,7 @@ POST /projects/:id/pipeline
| `ref` | string | yes | Reference to commit |
| `variables` | array | no | An array containing the variables available in the pipeline, matching the structure `[{ 'key' => 'UPLOAD_TO_S3', 'variable_type' => 'file', 'value' => 'true' }]` |
-```
+```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/pipeline?ref=master"
```
@@ -182,7 +182,7 @@ Example of response
> [Introduced][ce-5837] in GitLab 8.11
-```
+```plaintext
POST /projects/:id/pipelines/:pipeline_id/retry
```
@@ -191,7 +191,7 @@ POST /projects/:id/pipelines/:pipeline_id/retry
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `pipeline_id` | integer | yes | The ID of a pipeline |
-```
+```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/pipelines/46/retry"
```
@@ -229,7 +229,7 @@ Response:
> [Introduced][ce-5837] in GitLab 8.11
-```
+```plaintext
POST /projects/:id/pipelines/:pipeline_id/cancel
```
@@ -238,7 +238,7 @@ POST /projects/:id/pipelines/:pipeline_id/cancel
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `pipeline_id` | integer | yes | The ID of a pipeline |
-```
+```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/pipelines/46/cancel"
```
@@ -276,7 +276,7 @@ Response:
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/22988) in GitLab 11.6.
-```
+```plaintext
DELETE /projects/:id/pipelines/:pipeline_id
```
@@ -285,7 +285,7 @@ DELETE /projects/:id/pipelines/:pipeline_id
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `pipeline_id` | integer | yes | The ID of a pipeline |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" --request "DELETE" "https://gitlab.example.com/api/v4/projects/1/pipelines/46"
```
diff --git a/doc/api/project_aliases.md b/doc/api/project_aliases.md
index da8d7600c7c..59c0ffee76d 100644
--- a/doc/api/project_aliases.md
+++ b/doc/api/project_aliases.md
@@ -8,11 +8,11 @@ All methods require administrator authorization.
Get a list of all project aliases:
-```
+```plaintext
GET /project_aliases
```
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_aliases"
```
@@ -37,7 +37,7 @@ Example response:
Get details of a project alias:
-```
+```plaintext
GET /project_aliases/:name
```
@@ -45,7 +45,7 @@ GET /project_aliases/:name
|-----------|--------|----------|-----------------------|
| `name` | string | yes | The name of the alias |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_aliases/gitlab"
```
@@ -64,7 +64,7 @@ Example response:
Add a new alias for a project. Responds with a 201 when successful,
400 when there are validation errors (e.g. alias already exists):
-```
+```plaintext
POST /project_aliases
```
@@ -73,13 +73,13 @@ POST /project_aliases
| `project_id` | integer/string | yes | The ID or path of the project. |
| `name` | string | yes | The name of the alias. Must be unique. |
-```
+```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_aliases" --form "project_id=1" --form "name=gitlab"
```
or
-```
+```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_aliases" --form "project_id=gitlab-org/gitlab" --form "name=gitlab"
```
@@ -98,7 +98,7 @@ Example response:
Removes a project aliases. Responds with a 204 when project alias
exists, 404 when it doesn't:
-```
+```plaintext
DELETE /project_aliases/:name
```
@@ -106,6 +106,6 @@ DELETE /project_aliases/:name
|-----------|--------|----------|-----------------------|
| `name` | string | yes | The name of the alias |
-```
+```shell
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_aliases/gitlab"
```
diff --git a/doc/api/project_badges.md b/doc/api/project_badges.md
index 77c5d6cf37e..2e335d80947 100644
--- a/doc/api/project_badges.md
+++ b/doc/api/project_badges.md
@@ -16,7 +16,7 @@ Badges support placeholders that will be replaced in real time in both the link
Gets a list of a project's badges and its group badges.
-```
+```plaintext
GET /projects/:id/badges
```
@@ -58,7 +58,7 @@ Example response:
Gets a badge of a project.
-```
+```plaintext
GET /projects/:id/badges/:badge_id
```
@@ -88,7 +88,7 @@ Example response:
Adds a badge to a project.
-```
+```plaintext
POST /projects/:id/badges
```
@@ -119,7 +119,7 @@ Example response:
Updates a badge of a project.
-```
+```plaintext
PUT /projects/:id/badges/:badge_id
```
@@ -151,7 +151,7 @@ Example response:
Removes a badge from a project. Only project's badges will be removed by using this endpoint.
-```
+```plaintext
DELETE /projects/:id/badges/:badge_id
```
@@ -168,7 +168,7 @@ curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" https://gitl
Returns how the `link_url` and `image_url` final URLs would be after resolving the placeholder interpolation.
-```
+```plaintext
GET /projects/:id/badges/render
```
diff --git a/doc/api/project_clusters.md b/doc/api/project_clusters.md
index 78d32acd0d2..448d5966135 100644
--- a/doc/api/project_clusters.md
+++ b/doc/api/project_clusters.md
@@ -9,7 +9,7 @@ User will need at least maintainer access to use these endpoints.
Returns a list of project clusters.
-```
+```plaintext
GET /projects/:id/clusters
```
@@ -368,7 +368,7 @@ Example response:
Deletes an existing project cluster.
-```
+```plaintext
DELETE /projects/:id/clusters/:cluster_id
```
diff --git a/doc/api/project_level_variables.md b/doc/api/project_level_variables.md
index d4bda992f7c..fbeba9d6c7d 100644
--- a/doc/api/project_level_variables.md
+++ b/doc/api/project_level_variables.md
@@ -4,7 +4,7 @@
Get list of a project's variables.
-```
+```plaintext
GET /projects/:id/variables
```
@@ -12,7 +12,7 @@ GET /projects/:id/variables
|-----------|---------|----------|---------------------|
| `id` | integer/string | yes | The ID of a project or [urlencoded NAMESPACE/PROJECT_NAME of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/variables"
```
@@ -35,7 +35,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/a
Get the details of a project's specific variable.
-```
+```plaintext
GET /projects/:id/variables/:key
```
@@ -44,7 +44,7 @@ GET /projects/:id/variables/:key
| `id` | integer/string | yes | The ID of a project or [urlencoded NAMESPACE/PROJECT_NAME of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `key` | string | yes | The `key` of a variable |
-```
+```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/variables/TEST_VARIABLE_1"
```
@@ -62,7 +62,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/a
Create a new variable.
-```
+```plaintext
POST /projects/:id/variables
```
@@ -76,7 +76,7 @@ POST /projects/:id/variables
| `masked` | boolean | no | Whether the variable is masked |
| `environment_scope` | string | no | The `environment_scope` of the variable |
-```
+```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/variables" --form "key=NEW_VARIABLE" --form "value=new value"
```
@@ -95,7 +95,7 @@ curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitla
Update a project's variable.
-```
+```plaintext
PUT /projects/:id/variables/:key
```
@@ -109,7 +109,7 @@ PUT /projects/:id/variables/:key
| `masked` | boolean | no | Whether the variable is masked |
| `environment_scope` | string | no | The `environment_scope` of the variable |
-```
+```shell
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/variables/NEW_VARIABLE" --form "value=updated value"
```
@@ -128,7 +128,7 @@ curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab
Remove a project's variable.
-```
+```plaintext
DELETE /projects/:id/variables/:key
```
@@ -137,6 +137,6 @@ DELETE /projects/:id/variables/:key
| `id` | integer/string | yes | The ID of a project or [urlencoded NAMESPACE/PROJECT_NAME of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `key` | string | yes | The `key` of a variable |
-```
+```shell
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/variables/VARIABLE_1"
```
diff --git a/doc/api/project_snippets.md b/doc/api/project_snippets.md
index b734273b5f6..39df2925a1e 100644
--- a/doc/api/project_snippets.md
+++ b/doc/api/project_snippets.md
@@ -23,7 +23,7 @@ visibility setting keep this setting. You can read more about the change in the
Get a list of project snippets.
-```
+```plaintext
GET /projects/:id/snippets
```
@@ -35,7 +35,7 @@ Parameters:
Get a single project snippet.
-```
+```plaintext
GET /projects/:id/snippets/:snippet_id
```
@@ -68,7 +68,7 @@ Parameters:
Creates a new project snippet. The user must have permission to create new snippets.
-```
+```plaintext
POST /projects/:id/snippets
```
@@ -106,7 +106,7 @@ curl --request POST https://gitlab.com/api/v4/projects/:id/snippets \
Updates an existing project snippet. The user must have permission to change an existing snippet.
-```
+```plaintext
PUT /projects/:id/snippets/:snippet_id
```
@@ -145,7 +145,7 @@ curl --request PUT https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id \
Deletes an existing project snippet. This returns a `204 No Content` status code if the operation was successfully or `404` if the resource was not found.
-```
+```plaintext
DELETE /projects/:id/snippets/:snippet_id
```
@@ -165,7 +165,7 @@ curl --request DELETE https://gitlab.com/api/v4/projects/:id/snippets/:snippet_i
Returns the raw project snippet as plain text.
-```
+```plaintext
GET /projects/:id/snippets/:snippet_id/raw
```
@@ -187,7 +187,7 @@ curl https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id/raw \
Available only for admins.
-```
+```plaintext
GET /projects/:id/snippets/:snippet_id/user_agent_detail
```
diff --git a/doc/api/project_statistics.md b/doc/api/project_statistics.md
index 2732fa47fa0..d96d3de6a73 100644
--- a/doc/api/project_statistics.md
+++ b/doc/api/project_statistics.md
@@ -8,7 +8,7 @@ Retrieving the statistics requires write access to the repository.
Currently only HTTP fetches statistics are returned.
Fetches statistics includes both clones and pulls count and are HTTP only, SSH fetches are not included.
-```
+```plaintext
GET /projects/:id/statistics
```
diff --git a/doc/api/project_templates.md b/doc/api/project_templates.md
index d6ad77de429..4062df24525 100644
--- a/doc/api/project_templates.md
+++ b/doc/api/project_templates.md
@@ -21,7 +21,7 @@ in GitLab 11.5
## Get all templates of a particular type
-```
+```plaintext
GET /projects/:id/templates/:type
```
@@ -87,7 +87,7 @@ Example response (licenses):
## Get one template of a particular type
-```
+```plaintext
GET /projects/:id/templates/:type/:key
```
@@ -106,7 +106,6 @@ Example response (Dockerfile):
"name": "Binary",
"content": "# This file is a template, and might need editing before it works on your project.\n# This Dockerfile installs a compiled binary into a bare system.\n# You must either commit your compiled binary into source control (not recommended)\n# or build the binary first as part of a CI/CD pipeline.\n\nFROM buildpack-deps:jessie\n\nWORKDIR /usr/local/bin\n\n# Change `app` to whatever your binary is called\nAdd app .\nCMD [\"./app\"]\n"
}
-
```
Example response (license):
diff --git a/doc/api/projects.md b/doc/api/projects.md
index a0243be1907..905eb01b0ad 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -35,7 +35,7 @@ There are currently three options for `merge_method` to choose from:
Get a list of all visible projects across GitLab for the authenticated user.
When accessed without authentication, only public projects with "simple" fields are returned.
-```
+```plaintext
GET /projects
```
@@ -298,7 +298,7 @@ the `approvals_before_merge` parameter:
You can filter by [custom attributes](custom_attributes.md) with:
-```
+```plaintext
GET /projects?custom_attributes[key]=value&custom_attributes[other_key]=other_value
```
@@ -315,7 +315,7 @@ Note that keyset pagination only supports `order_by=id`. Other sorting options a
Get a list of visible projects owned by the given user. When accessed without authentication, only public projects are returned.
-```
+```plaintext
GET /users/:user_id/projects
```
@@ -530,7 +530,7 @@ This endpoint supports [keyset pagination](README.md#keyset-based-pagination) fo
Get a list of visible projects owned by the given user. When accessed without authentication, only public projects are returned.
-```
+```plaintext
GET /users/:user_id/starred_projects
```
@@ -740,7 +740,7 @@ Example response:
Get a specific project. This endpoint can be accessed without authentication if
the project is publicly accessible.
-```
+```plaintext
GET /projects/:id
```
@@ -955,7 +955,7 @@ If the project is a fork, and you provide a valid token to authenticate, the
Get the users list of a project.
-```
+```plaintext
GET /projects/:id/users
```
@@ -993,7 +993,7 @@ Please refer to the [Events API documentation](events.md#list-a-projects-visible
Creates a new project owned by the authenticated user.
-```
+```plaintext
POST /projects
```
@@ -1061,7 +1061,7 @@ where `password` is a public access key with the `api` scope enabled.
Creates a new project owned by the specified user. Available only for admins.
-```
+```plaintext
POST /projects/user/:user_id
```
@@ -1128,7 +1128,7 @@ where `password` is a public access key with the `api` scope enabled.
Updates an existing project.
-```
+```plaintext
PUT /projects/:id
```
@@ -1200,7 +1200,7 @@ The forking operation for a project is asynchronous and is completed in a
background job. The request will return immediately. To determine whether the
fork of the project has completed, query the `import_status` for the new project.
-```
+```plaintext
POST /projects/:id/fork
```
@@ -1217,7 +1217,7 @@ POST /projects/:id/fork
List the projects accessible to the calling user that have an established, forked relationship with the specified project
-```
+```plaintext
GET /projects/:id/forks
```
@@ -1315,7 +1315,7 @@ Example responses:
Stars a given project. Returns status code `304` if the project is already starred.
-```
+```plaintext
POST /projects/:id/star
```
@@ -1405,7 +1405,7 @@ Example response:
Unstars a given project. Returns status code `304` if the project is not starred.
-```
+```plaintext
POST /projects/:id/unstar
```
@@ -1495,7 +1495,7 @@ Example response:
List the users who starred the specified project.
-```
+```plaintext
GET /projects/:id/starrers
```
@@ -1540,7 +1540,7 @@ Example responses:
Get languages used in a project with percentage value.
-```
+```plaintext
GET /projects/:id/languages
```
@@ -1564,7 +1564,7 @@ Example response:
Archives the project if the user is either admin or the project owner of this project. This action is
idempotent, thus archiving an already archived project will not change the project.
-```
+```plaintext
POST /projects/:id/archive
```
@@ -1673,7 +1673,7 @@ Example response:
Unarchives the project if the user is either admin or the project owner of this project. This action is
idempotent, thus unarchiving a non-archived project will not change the project.
-```
+```plaintext
POST /projects/:id/unarchive
```
@@ -1786,7 +1786,7 @@ This endpoint either:
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).
-```
+```plaintext
DELETE /projects/:id
```
@@ -1800,7 +1800,7 @@ DELETE /projects/:id
Restores project marked for deletion.
-```
+```plaintext
POST /projects/:id/restore
```
@@ -1812,7 +1812,7 @@ POST /projects/:id/restore
Uploads a file to the specified project to be used in an issue or merge request description, or a comment.
-```
+```plaintext
POST /projects/:id/uploads
```
@@ -1848,7 +1848,7 @@ In Markdown contexts, the link is automatically expanded when the format in
Allow to share project with group.
-```
+```plaintext
POST /projects/:id/share
```
@@ -1863,7 +1863,7 @@ POST /projects/:id/share
Unshare the project from the group. Returns `204` and no content on success.
-```
+```plaintext
DELETE /projects/:id/share/:group_id
```
@@ -1885,7 +1885,7 @@ These are different for [System Hooks](system_hooks.md) that are system wide.
Get a list of project hooks.
-```
+```plaintext
GET /projects/:id/hooks
```
@@ -1897,7 +1897,7 @@ GET /projects/:id/hooks
Get a specific hook for a project.
-```
+```plaintext
GET /projects/:id/hooks/:hook_id
```
@@ -1930,7 +1930,7 @@ GET /projects/:id/hooks/:hook_id
Adds a hook to a specified project.
-```
+```plaintext
POST /projects/:id/hooks
```
@@ -1955,7 +1955,7 @@ POST /projects/:id/hooks
Edits a hook for a specified project.
-```
+```plaintext
PUT /projects/:id/hooks/:hook_id
```
@@ -1982,7 +1982,7 @@ PUT /projects/:id/hooks/:hook_id
Removes a hook from a project. This is an idempotent method and can be called multiple times.
Either the hook is available or not.
-```
+```plaintext
DELETE /projects/:id/hooks/:hook_id
```
@@ -2000,7 +2000,7 @@ Allows modification of the forked relationship between existing projects. Availa
### Create a forked from/to relation between existing projects
-```
+```plaintext
POST /projects/:id/fork/:forked_from_id
```
@@ -2011,7 +2011,7 @@ POST /projects/:id/fork/:forked_from_id
### Delete an existing forked from relationship
-```
+```plaintext
DELETE /projects/:id/fork
```
@@ -2025,7 +2025,7 @@ Search for projects by name which are accessible to the authenticated user. This
endpoint can be accessed without authentication if the project is publicly
accessible.
-```
+```plaintext
GET /projects
```
@@ -2043,7 +2043,7 @@ curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/ap
> Introduced in GitLab 9.0.
-```
+```plaintext
POST /projects/:id/housekeeping
```
@@ -2057,7 +2057,7 @@ POST /projects/:id/housekeeping
Get the push rules of a project.
-```
+```plaintext
GET /projects/:id/push_rule
```
@@ -2101,7 +2101,7 @@ the `commit_committer_check` and `reject_unsigned_commits` parameters:
Adds a push rule to a specified project.
-```
+```plaintext
POST /projects/:id/push_rule
```
@@ -2124,7 +2124,7 @@ POST /projects/:id/push_rule
Edits a push rule for a specified project.
-```
+```plaintext
PUT /projects/:id/push_rule
```
@@ -2150,7 +2150,7 @@ PUT /projects/:id/push_rule
Removes a push rule from a project. This is an idempotent method and can be called multiple times.
Either the push rule is available or not.
-```
+```plaintext
DELETE /projects/:id/push_rule
```
@@ -2162,7 +2162,7 @@ DELETE /projects/:id/push_rule
> Introduced in GitLab 11.1.
-```
+```plaintext
PUT /projects/:id/transfer
```
@@ -2186,7 +2186,7 @@ Read more in the [Project members](members.md) documentation.
> Introduced in [GitLab Starter](https://about.gitlab.com/pricing/) 10.3.
-```
+```plaintext
POST /projects/:id/mirror/pull
```
@@ -2219,7 +2219,7 @@ format.
If a repository is corrupted to the point where `git clone` does not work, the
snapshot may allow some of the data to be retrieved.
-```
+```plaintext
GET /projects/:id/snapshot
```
diff --git a/doc/api/protected_branches.md b/doc/api/protected_branches.md
index e59d7130356..de862109055 100644
--- a/doc/api/protected_branches.md
+++ b/doc/api/protected_branches.md
@@ -6,7 +6,7 @@
The access levels are defined in the `ProtectedRefAccess.allowed_access_levels` method. Currently, these levels are recognized:
-```
+```plaintext
0 => No access
30 => Developer access
40 => Maintainer access
@@ -17,7 +17,7 @@ The access levels are defined in the `ProtectedRefAccess.allowed_access_levels`
Gets a list of protected branches from a project.
-```
+```plaintext
GET /projects/:id/protected_branches
```
@@ -91,7 +91,7 @@ Example response:
Gets a single protected branch or wildcard protected branch.
-```
+```plaintext
GET /projects/:id/protected_branches/:name
```
@@ -160,7 +160,7 @@ Example response:
Protects a single repository branch or several project repository
branches using a wildcard protected branch.
-```
+```plaintext
POST /projects/:id/protected_branches
```
@@ -292,7 +292,7 @@ Example response:
Unprotects the given protected branch or wildcard protected branch.
-```
+```plaintext
DELETE /projects/:id/protected_branches/:name
```
@@ -309,7 +309,7 @@ curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" 'https://git
Update the "code owner approval required" option for the given protected branch protected branch.
-```
+```plaintext
PATCH /projects/:id/protected_branches/:name
```
diff --git a/doc/api/protected_environments.md b/doc/api/protected_environments.md
index 852a5ae6e71..dea1382af29 100644
--- a/doc/api/protected_environments.md
+++ b/doc/api/protected_environments.md
@@ -7,7 +7,7 @@
The access levels are defined in the `ProtectedEnvironment::DeployAccessLevel::ALLOWED_ACCESS_LEVELS` method.
Currently, these levels are recognized:
-```
+```plaintext
30 => Developer access
40 => Maintainer access
60 => Admin access
diff --git a/doc/api/protected_tags.md b/doc/api/protected_tags.md
index a5490094a44..1d844a2c5c4 100644
--- a/doc/api/protected_tags.md
+++ b/doc/api/protected_tags.md
@@ -6,7 +6,7 @@
Currently, these levels are recognized:
-```
+```plaintext
0 => No access
30 => Developer access
40 => Maintainer access
@@ -17,7 +17,7 @@ Currently, these levels are recognized:
Gets a list of protected tags from a project.
This function takes pagination parameters `page` and `per_page` to restrict the list of protected tags.
-```
+```plaintext
GET /projects/:id/protected_tags
```
@@ -51,7 +51,7 @@ Example response:
Gets a single protected tag or wildcard protected tag.
The pagination parameters `page` and `per_page` can be used to restrict the list of protected tags.
-```
+```plaintext
GET /projects/:id/protected_tags/:name
```
@@ -83,7 +83,7 @@ Example response:
Protects a single repository tag or several project repository
tags using a wildcard protected tag.
-```
+```plaintext
POST /projects/:id/protected_tags
```
@@ -115,7 +115,7 @@ Example response:
Unprotects the given protected tag or wildcard protected tag.
-```
+```plaintext
DELETE /projects/:id/protected_tags/:name
```
diff --git a/doc/ci/environments.md b/doc/ci/environments.md
index 166ed9b4571..ff4096600e0 100644
--- a/doc/ci/environments.md
+++ b/doc/ci/environments.md
@@ -340,6 +340,12 @@ deploy:
- master
```
+When deploying to a Kubernetes cluster using GitLab's Kubernetes integration,
+information about the cluster and namespace will be displayed above the job
+trace on the deployment job page:
+
+![Deployment cluster information](img/environments_deployment_cluster_v12_8.png)
+
NOTE: **Note:**
Kubernetes configuration is not supported for Kubernetes clusters
that are [managed by GitLab](../user/project/clusters/index.md#gitlab-managed-clusters).
diff --git a/doc/ci/img/environments_deployment_cluster_v12_8.png b/doc/ci/img/environments_deployment_cluster_v12_8.png
new file mode 100644
index 00000000000..dfda1deb649
--- /dev/null
+++ b/doc/ci/img/environments_deployment_cluster_v12_8.png
Binary files differ
diff --git a/doc/security/webhooks.md b/doc/security/webhooks.md
index 010f5aa2d43..7313cffdd13 100644
--- a/doc/security/webhooks.md
+++ b/doc/security/webhooks.md
@@ -4,6 +4,9 @@ type: concepts, reference, howto
# Webhooks and insecure internal web services
+NOTE: **Note:**
+On GitLab.com the [maximum number of webhooks](../user/gitlab_com/index.md#maximum-number-of-webhooks) per project is limited.
+
If you have non-GitLab web services running on your GitLab server or within its
local network, these may be vulnerable to exploitation via Webhooks.
diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md
index a6e7255df3d..af33936297c 100644
--- a/doc/topics/autodevops/index.md
+++ b/doc/topics/autodevops/index.md
@@ -181,7 +181,7 @@ To make full use of Auto DevOps, you will need:
If you have configured GitLab's Kubernetes integration, you can deploy it to
your cluster by installing the
[GitLab-managed app for cert-manager](../../user/clusters/applications.md#cert-manager).
-
+
If you do not have Kubernetes or Prometheus installed, then Auto Review Apps,
Auto Deploy, and Auto Monitoring will be silently skipped.
@@ -1030,6 +1030,32 @@ It is also possible to copy and paste the contents of the [Auto DevOps
template] into your project and edit this as needed. You may prefer to do it
that way if you want to specifically remove any part of it.
+### Customizing the Kubernetes namespace
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/27630) in GitLab 12.6.
+
+For **non**-GitLab-managed clusters, the namespace can be customized using
+`.gitlab-ci.yml` by specifying
+[`environment:kubernetes:namespace`](../../ci/environments.md#configuring-kubernetes-deployments).
+For example, the following configuration overrides the namespace used for
+`production` deployments:
+
+```yaml
+include:
+ - template: Auto-DevOps.gitlab-ci.yml
+
+production:
+ environment:
+ kubernetes:
+ namespace: production
+```
+
+When deploying to a custom namespace with Auto DevOps, the service account
+provided with the cluster needs at least the `edit` role within the namespace.
+
+- If the service account can create namespaces, then the namespace can be created on-demand.
+- Otherwise, the namespace must exist prior to deployment.
+
### Using components of Auto DevOps
If you only require a subset of the features offered by Auto DevOps, you can include
diff --git a/doc/user/gitlab_com/index.md b/doc/user/gitlab_com/index.md
index 143da6b7fd6..16b5f94162b 100644
--- a/doc/user/gitlab_com/index.md
+++ b/doc/user/gitlab_com/index.md
@@ -94,6 +94,13 @@ IP based firewall can be configured by looking up all
[Static endpoints](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/97) are being considered.
+## Maximum number of webhooks
+
+A limit of:
+
+- 100 webhooks applies to projects.
+- 50 webhooks applies to groups. **(BRONZE ONLY)**
+
## Shared Runners
GitLab offers Linux and Windows shared runners hosted on GitLab.com for executing your pipelines.
diff --git a/doc/user/project/clusters/index.md b/doc/user/project/clusters/index.md
index 819e5a26c22..e221d81c280 100644
--- a/doc/user/project/clusters/index.md
+++ b/doc/user/project/clusters/index.md
@@ -281,22 +281,28 @@ GitLab CI/CD build environment.
| `KUBECONFIG` | Path to a file containing `kubeconfig` for this deployment. CA bundle would be embedded if specified. This config also embeds the same token defined in `KUBE_TOKEN` so you likely will only need this variable. This variable name is also automatically picked up by `kubectl` so you won't actually need to reference it explicitly if using `kubectl`. |
| `KUBE_INGRESS_BASE_DOMAIN` | From GitLab 11.8, this variable can be used to set a domain per cluster. See [cluster domains](#base-domain) for more information. |
-NOTE: **NOTE:**
+NOTE: **Note:**
Prior to GitLab 11.5, `KUBE_TOKEN` was the Kubernetes token of the main
service account of the cluster integration.
NOTE: **Note:**
If your cluster was created before GitLab 12.2, default `KUBE_NAMESPACE` will be set to `<project_name>-<project_id>`.
-When deploying a custom namespace:
+### Custom namespace
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/27630) in GitLab 12.6.
+
+The Kubernetes integration defaults to project-environment-specific namespaces
+of the form `<project_name>-<project_id>-<environment>` (see [Deployment
+variables](#deployment-variables)).
-- The custom namespace must exist in your cluster.
-- The project's deployment service account must have permission to deploy to the namespace.
-- `KUBECONFIG` must be updated to use the custom namespace instead of the GitLab-provided default (this is [not automatic](https://gitlab.com/gitlab-org/gitlab/issues/31519)).
-- If deploying with Auto DevOps, you must *also* override `KUBE_NAMESPACE` with the custom namespace.
+For **non**-GitLab-managed clusters, the namespace can be customized using
+[`environment:kubernetes:namespace`](../../../ci/environments.md#configuring-kubernetes-deployments)
+in `.gitlab-ci.yml`.
-CAUTION: **Caution:**
-GitLab does not save custom namespaces in the database. So while deployments work with custom namespaces, GitLab's integration for already-deployed environments will not pick up the customized values. For example, [Deploy Boards](../deploy_boards.md) will not work as intended for those deployments. For more information, see the [related issue](https://gitlab.com/gitlab-org/gitlab/issues/27630).
+NOTE: **Note:** When using a [GitLab-managed cluster](#gitlab-managed-clusters), the
+namespaces are created automatically prior to deployment and [can not be
+customized](https://gitlab.com/gitlab-org/gitlab/issues/38054).
### Troubleshooting
diff --git a/doc/user/project/integrations/webhooks.md b/doc/user/project/integrations/webhooks.md
index 0896faa5e9d..2deee360bde 100644
--- a/doc/user/project/integrations/webhooks.md
+++ b/doc/user/project/integrations/webhooks.md
@@ -47,33 +47,8 @@ and **per project and per group** for **GitLab Enterprise Edition**.
Navigate to the webhooks page by going to your project's
**Settings ➔ Webhooks**.
-## Maximum number of project webhooks (per tier)
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20730) in GitLab 12.6.
-
-A maximum number of project webhooks applies to each [GitLab.com
-tier](https://about.gitlab.com/pricing/), as shown in the following table:
-
-| Tier | Number of webhooks per project |
-|----------|--------------------------------|
-| Free | 100 |
-| Bronze | 100 |
-| Silver | 100 |
-| Gold | 100 |
-
-## Maximum number of group webhooks (per tier)
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25129) in GitLab 12.9.
-
-A maximum number of group webhooks applies to each [GitLab.com
-tier](https://about.gitlab.com/pricing/), as shown in the following table:
-
-| Tier | Number of webhooks per group |
-|----------|--------------------------------|
-| Free | feature not available |
-| Bronze | 50 |
-| Silver | 50 |
-| Gold | 50 |
+NOTE: **Note:**
+On GitLab.com, the [maximum number of webhooks](../../../user/gitlab_com/index.md#maximum-number-of-webhooks) per project, and per group, is limited.
## Use-cases