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:
Diffstat (limited to 'doc')
-rw-r--r--doc/administration/packages/container_registry.md4
-rw-r--r--doc/api/graphql/reference/gitlab_schema.graphql142
-rw-r--r--doc/api/graphql/reference/gitlab_schema.json409
-rw-r--r--doc/api/graphql/reference/index.md19
-rw-r--r--doc/api/settings.md1
-rw-r--r--doc/ci/triggers/README.md16
-rw-r--r--doc/user/admin_area/index.md3
-rw-r--r--doc/user/admin_area/settings/index.md2
-rw-r--r--doc/user/packages/container_registry/index.md13
9 files changed, 606 insertions, 3 deletions
diff --git a/doc/administration/packages/container_registry.md b/doc/administration/packages/container_registry.md
index a798c9527b0..b940cb6933b 100644
--- a/doc/administration/packages/container_registry.md
+++ b/doc/administration/packages/container_registry.md
@@ -516,6 +516,10 @@ on how to achieve that.
## Use an external container registry with GitLab as an auth endpoint
+NOTE: **Note:**
+In using an external container registry, some features associated with the
+container registry may be unavailable or have [inherant risks](./../../user/packages/container_registry/index.md#use-with-external-container-registries)
+
**Omnibus GitLab**
You can use GitLab as an auth endpoint with an external container registry.
diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql
index 7e863490369..0eebc74cc6c 100644
--- a/doc/api/graphql/reference/gitlab_schema.graphql
+++ b/doc/api/graphql/reference/gitlab_schema.graphql
@@ -2984,6 +2984,103 @@ type EpicTreeReorderPayload {
errors: [String!]!
}
+type GeoNode {
+ """
+ The maximum concurrency of container repository sync for this secondary node
+ """
+ containerRepositoriesMaxCapacity: Int
+
+ """
+ Indicates whether this Geo node is enabled
+ """
+ enabled: Boolean
+
+ """
+ The maximum concurrency of LFS/attachment backfill for this secondary node
+ """
+ filesMaxCapacity: Int
+
+ """
+ ID of this GeoNode
+ """
+ id: ID!
+
+ """
+ The URL defined on the primary node that secondary nodes should use to contact it
+ """
+ internalUrl: String
+
+ """
+ The interval (in days) in which the repository verification is valid. Once expired, it will be reverified
+ """
+ minimumReverificationInterval: Int
+
+ """
+ The unique identifier for this Geo node
+ """
+ name: String
+
+ """
+ Indicates whether this Geo node is the primary
+ """
+ primary: Boolean
+
+ """
+ The maximum concurrency of repository backfill for this secondary node
+ """
+ reposMaxCapacity: Int
+
+ """
+ The namespaces that should be synced, if `selective_sync_type` == `namespaces`
+ """
+ selectiveSyncNamespaces(
+ """
+ Returns the elements in the list that come after the specified cursor.
+ """
+ after: String
+
+ """
+ Returns the elements in the list that come before the specified cursor.
+ """
+ before: String
+
+ """
+ Returns the first _n_ elements from the list.
+ """
+ first: Int
+
+ """
+ Returns the last _n_ elements from the list.
+ """
+ last: Int
+ ): NamespaceConnection
+
+ """
+ The repository storages whose projects should be synced, if `selective_sync_type` == `shards`
+ """
+ selectiveSyncShards: [String!]
+
+ """
+ Indicates if syncing is limited to only specific groups, or shards
+ """
+ selectiveSyncType: String
+
+ """
+ Indicates if this secondary node will replicate blobs in Object Storage
+ """
+ syncObjectStorage: Boolean
+
+ """
+ The user-facing URL for this Geo node
+ """
+ url: String
+
+ """
+ The maximum concurrency of repository verification for this secondary node
+ """
+ verificationMaxCapacity: Int
+}
+
type GrafanaIntegration {
"""
Timestamp of the issue's creation
@@ -5435,6 +5532,41 @@ type Namespace {
visibility: String
}
+"""
+The connection type for Namespace.
+"""
+type NamespaceConnection {
+ """
+ A list of edges.
+ """
+ edges: [NamespaceEdge]
+
+ """
+ A list of nodes.
+ """
+ nodes: [Namespace]
+
+ """
+ Information to aid in pagination.
+ """
+ pageInfo: PageInfo!
+}
+
+"""
+An edge in a connection.
+"""
+type NamespaceEdge {
+ """
+ A cursor for use in pagination.
+ """
+ cursor: String!
+
+ """
+ The item at the end of the edge.
+ """
+ node: Namespace
+}
+
type Note {
"""
User who wrote this note
@@ -6917,6 +7049,16 @@ type Query {
): String!
"""
+ Find a Geo node
+ """
+ geoNode(
+ """
+ The name of the Geo node. Defaults to the current Geo node name.
+ """
+ name: String
+ ): GeoNode
+
+ """
Find a group
"""
group(
diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json
index 813ab39795a..9abc312da33 100644
--- a/doc/api/graphql/reference/gitlab_schema.json
+++ b/doc/api/graphql/reference/gitlab_schema.json
@@ -8655,6 +8655,280 @@
},
{
"kind": "OBJECT",
+ "name": "GeoNode",
+ "description": null,
+ "fields": [
+ {
+ "name": "containerRepositoriesMaxCapacity",
+ "description": "The maximum concurrency of container repository sync for this secondary node",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "enabled",
+ "description": "Indicates whether this Geo node is enabled",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "filesMaxCapacity",
+ "description": "The maximum concurrency of LFS/attachment backfill for this secondary node",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "id",
+ "description": "ID of this GeoNode",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "ID",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "internalUrl",
+ "description": "The URL defined on the primary node that secondary nodes should use to contact it",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "minimumReverificationInterval",
+ "description": "The interval (in days) in which the repository verification is valid. Once expired, it will be reverified",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "name",
+ "description": "The unique identifier for this Geo node",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "primary",
+ "description": "Indicates whether this Geo node is the primary",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "reposMaxCapacity",
+ "description": "The maximum concurrency of repository backfill for this secondary node",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "selectiveSyncNamespaces",
+ "description": "The namespaces that should be synced, if `selective_sync_type` == `namespaces`",
+ "args": [
+ {
+ "name": "after",
+ "description": "Returns the elements in the list that come after the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "before",
+ "description": "Returns the elements in the list that come before the specified cursor.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "first",
+ "description": "Returns the first _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ },
+ {
+ "name": "last",
+ "description": "Returns the last _n_ elements from the list.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "NamespaceConnection",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "selectiveSyncShards",
+ "description": "The repository storages whose projects should be synced, if `selective_sync_type` == `shards`",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "selectiveSyncType",
+ "description": "Indicates if syncing is limited to only specific groups, or shards",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "syncObjectStorage",
+ "description": "Indicates if this secondary node will replicate blobs in Object Storage",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Boolean",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "url",
+ "description": "The user-facing URL for this Geo node",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "verificationMaxCapacity",
+ "description": "The maximum concurrency of repository verification for this secondary node",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "SCALAR",
+ "name": "Int",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "GrafanaIntegration",
"description": null,
"fields": [
@@ -16464,6 +16738,118 @@
},
{
"kind": "OBJECT",
+ "name": "NamespaceConnection",
+ "description": "The connection type for Namespace.",
+ "fields": [
+ {
+ "name": "edges",
+ "description": "A list of edges.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "NamespaceEdge",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "nodes",
+ "description": "A list of nodes.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "LIST",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "Namespace",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "pageInfo",
+ "description": "Information to aid in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "OBJECT",
+ "name": "PageInfo",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
+ "name": "NamespaceEdge",
+ "description": "An edge in a connection.",
+ "fields": [
+ {
+ "name": "cursor",
+ "description": "A cursor for use in pagination.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "NON_NULL",
+ "name": null,
+ "ofType": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ }
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "node",
+ "description": "The item at the end of the edge.",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "Namespace",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "inputFields": null,
+ "interfaces": [
+
+ ],
+ "enumValues": null,
+ "possibleTypes": null
+ },
+ {
+ "kind": "OBJECT",
"name": "Note",
"description": null,
"fields": [
@@ -20779,6 +21165,29 @@
"deprecationReason": null
},
{
+ "name": "geoNode",
+ "description": "Find a Geo node",
+ "args": [
+ {
+ "name": "name",
+ "description": "The name of the Geo node. Defaults to the current Geo node name.",
+ "type": {
+ "kind": "SCALAR",
+ "name": "String",
+ "ofType": null
+ },
+ "defaultValue": null
+ }
+ ],
+ "type": {
+ "kind": "OBJECT",
+ "name": "GeoNode",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "group",
"description": "Find a group",
"args": [
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index dbe98639d23..6948f361a14 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -483,6 +483,25 @@ Autogenerated return type of EpicTreeReorder
| `clientMutationId` | String | A unique identifier for the client performing the mutation. |
| `errors` | String! => Array | Reasons why the mutation failed. |
+## GeoNode
+
+| Name | Type | Description |
+| --- | ---- | ---------- |
+| `containerRepositoriesMaxCapacity` | Int | The maximum concurrency of container repository sync for this secondary node |
+| `enabled` | Boolean | Indicates whether this Geo node is enabled |
+| `filesMaxCapacity` | Int | The maximum concurrency of LFS/attachment backfill for this secondary node |
+| `id` | ID! | ID of this GeoNode |
+| `internalUrl` | String | The URL defined on the primary node that secondary nodes should use to contact it |
+| `minimumReverificationInterval` | Int | The interval (in days) in which the repository verification is valid. Once expired, it will be reverified |
+| `name` | String | The unique identifier for this Geo node |
+| `primary` | Boolean | Indicates whether this Geo node is the primary |
+| `reposMaxCapacity` | Int | The maximum concurrency of repository backfill for this secondary node |
+| `selectiveSyncShards` | String! => Array | The repository storages whose projects should be synced, if `selective_sync_type` == `shards` |
+| `selectiveSyncType` | String | Indicates if syncing is limited to only specific groups, or shards |
+| `syncObjectStorage` | Boolean | Indicates if this secondary node will replicate blobs in Object Storage |
+| `url` | String | The user-facing URL for this Geo node |
+| `verificationMaxCapacity` | Int | The maximum concurrency of repository verification for this secondary node |
+
## GrafanaIntegration
| Name | Type | Description |
diff --git a/doc/api/settings.md b/doc/api/settings.md
index 2c75c175fdd..5fe068cf085 100644
--- a/doc/api/settings.md
+++ b/doc/api/settings.md
@@ -45,6 +45,7 @@ Example response:
"default_group_visibility" : "private",
"gravatar_enabled" : true,
"sign_in_text" : null,
+ "container_expiration_policies_enable_historic_entries": true,
"container_registry_token_expire_delay": 5,
"repository_storages": ["default"],
"plantuml_enabled": false,
diff --git a/doc/ci/triggers/README.md b/doc/ci/triggers/README.md
index 29deed724f9..db3d2352f09 100644
--- a/doc/ci/triggers/README.md
+++ b/doc/ci/triggers/README.md
@@ -15,7 +15,21 @@ tag) with an API call.
## Authentication tokens
-The following methods of authentication are supported.
+The following methods of authentication are supported:
+
+- [Trigger token](#trigger-token)
+- [CI job token](#ci-job-token)
+
+If using the `$CI_PIPELINE_SOURCE` [predefined environment variable](../variables/predefined_variables.md#variables-reference)
+to limit which jobs run in a pipeline, the value could be either `pipeline` or `trigger`,
+depending on which trigger method is used.
+
+| `$CI_PIPELINE_SOURCE` value | Trigger method |
+|-----------------------------|----------------|
+| `pipeline` | Using the `trigger:` keyword in the CI/CD configuration file, or using the trigger API with `$CI_JOB_TOKEN`. |
+| `trigger` | Using the trigger API using a generated trigger token |
+
+This also applies when using the `pipelines` or `triggers` keywords with the legacy [`only/except` basic syntax](../yaml/README.md#onlyexcept-basic).
### Trigger token
diff --git a/doc/user/admin_area/index.md b/doc/user/admin_area/index.md
index cbc033fdedc..204573da02d 100644
--- a/doc/user/admin_area/index.md
+++ b/doc/user/admin_area/index.md
@@ -147,6 +147,9 @@ The **Total users** is calculated as: **Active users** + **Blocked users**.
GitLab billing is based on the number of active users. For details of active users, see
[Choosing the number of users](../../subscriptions/index.md#choosing-the-number-of-users).
+**Please note** that during the initial stage, the information won't be 100% accurate given that
+background processes are still recollecting data.
+
### Administering Groups
You can administer all groups in the GitLab instance from the Admin Area's Groups page.
diff --git a/doc/user/admin_area/settings/index.md b/doc/user/admin_area/settings/index.md
index 6731ebb1d8c..f0e7bf272a7 100644
--- a/doc/user/admin_area/settings/index.md
+++ b/doc/user/admin_area/settings/index.md
@@ -61,7 +61,7 @@ Access the default page for admin area settings by navigating to
| ------ | ----------- |
| [Continuous Integration and Deployment](continuous_integration.md) | Auto DevOps, runners and job artifacts. |
| [Required pipeline configuration](continuous_integration.md#required-pipeline-configuration-premium-only) **(PREMIUM ONLY)** | Set an instance-wide auto included [pipeline configuration](../../../ci/yaml/README.md). This pipeline configuration will be run after the project's own configuration. |
-| [Package Registry](continuous_integration.md#package-registry-configuration-premium-only) **(PREMIUM ONLY)**| Settings related to the use and experience of using GitLab's Package Registry. |
+| [Package Registry](continuous_integration.md#package-registry-configuration-premium-only) **(PREMIUM ONLY)**| Settings related to the use and experience of using GitLab's Package Registry. Note there are [risks involved](./../../packages/container_registry/index.md#use-with-external-container-registries) in enabling some of these settings. |
## Reporting
diff --git a/doc/user/packages/container_registry/index.md b/doc/user/packages/container_registry/index.md
index f5b8bd82a2b..d6c6767a8fd 100644
--- a/doc/user/packages/container_registry/index.md
+++ b/doc/user/packages/container_registry/index.md
@@ -488,7 +488,9 @@ older tags and images are regularly removed from the Container Registry.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/15398) in GitLab 12.8.
NOTE: **Note:**
-Expiration policies are only available for projects created in GitLab 12.8 and later.
+Expiration policies for projects created before GitLab 12.8 may be enabled by an
+admin in the [CI/CD Package Registry settings](./../../admin_area/settings/index.md#cicd).
+Note the inherant [risks involved](./index.md#use-with-external-container-registries).
It is possible to create a per-project expiration policy, so that you can make sure that
older tags and images are regularly removed from the Container Registry.
@@ -539,6 +541,15 @@ Examples:
See the API documentation for further details: [Edit project](../../../api/projects.md#edit-project).
+### Use with external container registries
+
+When using an [external container registry](./../../../administration/packages/container_registry.md#use-an-external-container-registry-with-gitlab-as-an-auth-endpoint),
+running an experation policy on a project may have some performance risks. If a project is going to run
+a policy that will remove large quantities of tags (in the thousands), the GitLab background jobs that
+run the policy may get backed up or fail completely. It is recommended you only enable container expiration
+policies for projects that were created before GitLab 12.8 if you are confident the amount of tags
+being cleaned up will be minimal.
+
## Limitations
Moving or renaming existing Container Registry repositories is not supported