diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/.vale/gitlab/spelling-exceptions.txt | 3 | ||||
-rw-r--r-- | doc/api/dora/metrics.md | 2 | ||||
-rw-r--r-- | doc/api/graphql/reference/index.md | 85 | ||||
-rw-r--r-- | doc/ci/pipelines/index.md | 1 | ||||
-rw-r--r-- | doc/development/api_graphql_styleguide.md | 4 | ||||
-rw-r--r-- | doc/development/i18n/externalization.md | 4 | ||||
-rw-r--r-- | doc/integration/jira/issues.md | 28 | ||||
-rw-r--r-- | doc/integration/omniauth.md | 2 | ||||
-rw-r--r-- | doc/update/removals.md | 10 | ||||
-rw-r--r-- | doc/user/profile/index.md | 15 | ||||
-rw-r--r-- | doc/user/project/remote_development/index.md | 17 | ||||
-rw-r--r-- | doc/user/workspace/index.md | 198 |
12 files changed, 313 insertions, 56 deletions
diff --git a/doc/.vale/gitlab/spelling-exceptions.txt b/doc/.vale/gitlab/spelling-exceptions.txt index 9345b4a7d79..b48a9e5dcb3 100644 --- a/doc/.vale/gitlab/spelling-exceptions.txt +++ b/doc/.vale/gitlab/spelling-exceptions.txt @@ -197,6 +197,7 @@ Coursier CPU CPUs CRAN +CRI-O cron crond cronjob @@ -275,6 +276,8 @@ desugar desugars desynchronized Dev +devfile +devfiles DevOps Dhall dialogs diff --git a/doc/api/dora/metrics.md b/doc/api/dora/metrics.md index 9d81a82f520..d30194c3da0 100644 --- a/doc/api/dora/metrics.md +++ b/doc/api/dora/metrics.md @@ -28,7 +28,6 @@ GET /projects/:id/dora/metrics | `id` | integer/string | yes | The ID or [URL-encoded path of the project](../rest/index.md#namespaced-path-encoding) can be accessed by the authenticated user. | | `metric` | string | yes | One of `deployment_frequency`, `lead_time_for_changes`, `time_to_restore_service` or `change_failure_rate`. | | `end_date` | string | no | Date range to end at. ISO 8601 Date format, for example `2021-03-01`. Default is the current date. | -| `environment_tier` | string | no | The [tier of the environment](../../ci/environments/index.md#deployment-tier-of-environments). Default is `production`. Deprecated, use `environment_tiers`. | | `environment_tiers` | array of strings | no | The [tiers of the environments](../../ci/environments/index.md#deployment-tier-of-environments). Default is `production`. | | `interval` | string | no | The bucketing interval. One of `all`, `monthly` or `daily`. Default is `daily`. | | `start_date` | string | no | Date range to start from. ISO 8601 Date format, for example `2021-03-01`. Default is 3 months ago. | @@ -69,7 +68,6 @@ GET /groups/:id/dora/metrics | `id` | integer/string | yes | The ID or [URL-encoded path of the project](../rest/index.md#namespaced-path-encoding) can be accessed by the authenticated user. | | `metric` | string | yes | One of `deployment_frequency`, `lead_time_for_changes`, `time_to_restore_service` or `change_failure_rate`. | | `end_date` | string | no | Date range to end at. ISO 8601 Date format, for example `2021-03-01`. Default is the current date. | -| `environment_tier` | string | no | The [tier of the environment](../../ci/environments/index.md#deployment-tier-of-environments). Default is `production`. Deprecated, use `environment_tiers`. | | `environment_tiers` | array of strings | no | The [tiers of the environments](../../ci/environments/index.md#deployment-tier-of-environments). Default is `production`. | | `interval` | string | no | The bucketing interval. One of `all`, `monthly` or `daily`. Default is `daily`. | | `start_date` | string | no | Date range to start from. ISO 8601 Date format, for example `2021-03-01`. Default is 3 months ago. | diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 18e44336223..412556b6657 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -3563,6 +3563,44 @@ Input type: `InstanceExternalAuditEventDestinationCreateInput` | <a id="mutationinstanceexternalauditeventdestinationcreateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | | <a id="mutationinstanceexternalauditeventdestinationcreateinstanceexternalauditeventdestination"></a>`instanceExternalAuditEventDestination` | [`InstanceExternalAuditEventDestination`](#instanceexternalauditeventdestination) | Destination created. | +### `Mutation.instanceExternalAuditEventDestinationDestroy` + +Input type: `InstanceExternalAuditEventDestinationDestroyInput` + +#### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| <a id="mutationinstanceexternalauditeventdestinationdestroyclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| <a id="mutationinstanceexternalauditeventdestinationdestroyid"></a>`id` | [`AuditEventsInstanceExternalAuditEventDestinationID!`](#auditeventsinstanceexternalauditeventdestinationid) | ID of the external instance audit event destination to destroy. | + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| <a id="mutationinstanceexternalauditeventdestinationdestroyclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| <a id="mutationinstanceexternalauditeventdestinationdestroyerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | + +### `Mutation.instanceExternalAuditEventDestinationUpdate` + +Input type: `InstanceExternalAuditEventDestinationUpdateInput` + +#### Arguments + +| Name | Type | Description | +| ---- | ---- | ----------- | +| <a id="mutationinstanceexternalauditeventdestinationupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| <a id="mutationinstanceexternalauditeventdestinationupdatedestinationurl"></a>`destinationUrl` | [`String`](#string) | Destination URL to change. | +| <a id="mutationinstanceexternalauditeventdestinationupdateid"></a>`id` | [`AuditEventsInstanceExternalAuditEventDestinationID!`](#auditeventsinstanceexternalauditeventdestinationid) | ID of the external instance audit event destination to update. | + +#### Fields + +| Name | Type | Description | +| ---- | ---- | ----------- | +| <a id="mutationinstanceexternalauditeventdestinationupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. | +| <a id="mutationinstanceexternalauditeventdestinationupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. | +| <a id="mutationinstanceexternalauditeventdestinationupdateinstanceexternalauditeventdestination"></a>`instanceExternalAuditEventDestination` | [`InstanceExternalAuditEventDestination`](#instanceexternalauditeventdestination) | Updated destination. | + ### `Mutation.issuableResourceLinkCreate` Input type: `IssuableResourceLinkCreateInput` @@ -13801,7 +13839,6 @@ Returns [`[DoraMetric!]`](#dorametric). | Name | Type | Description | | ---- | ---- | ----------- | | <a id="dorametricsenddate"></a>`endDate` | [`Date`](#date) | Date range to end at. Default is the current date. | -| <a id="dorametricsenvironmenttier"></a>`environmentTier` **{warning-solid}** | [`DeploymentTier`](#deploymenttier) | **Deprecated** in 15.2. Superseded by `environment_tiers` param. | | <a id="dorametricsenvironmenttiers"></a>`environmentTiers` | [`[DeploymentTier!]`](#deploymenttier) | Deployment tiers of the environments to return. Defaults to `[PRODUCTION]`. | | <a id="dorametricsinterval"></a>`interval` | [`DoraMetricBucketingInterval`](#dorametricbucketinginterval) | How the metric should be aggregated. Defaults to `DAILY`. In the case of `ALL`, the `date` field in the response will be `null`. | | <a id="dorametricsmetric"></a>`metric` **{warning-solid}** | [`DoraMetricType`](#dorametrictype) | **Deprecated** in 15.10. Superseded by metrics fields. See `DoraMetric` type. | @@ -15789,11 +15826,11 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="groupvaluestreamanalyticsflowmetricscycletimeassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="groupvaluestreamanalyticsflowmetricscycletimeauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="groupvaluestreamanalyticsflowmetricscycletimefrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="groupvaluestreamanalyticsflowmetricscycletimefrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="groupvaluestreamanalyticsflowmetricscycletimelabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricscycletimemilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricscycletimeprojectids"></a>`projectIds` | [`[ID!]`](#id) | Project IDs within the group hierarchy. | -| <a id="groupvaluestreamanalyticsflowmetricscycletimeto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="groupvaluestreamanalyticsflowmetricscycletimeto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `GroupValueStreamAnalyticsFlowMetrics.deploymentCount` @@ -15805,9 +15842,9 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | Name | Type | Description | | ---- | ---- | ----------- | -| <a id="groupvaluestreamanalyticsflowmetricsdeploymentcountfrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="groupvaluestreamanalyticsflowmetricsdeploymentcountfrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="groupvaluestreamanalyticsflowmetricsdeploymentcountprojectids"></a>`projectIds` | [`[ID!]`](#id) | Project IDs within the group hierarchy. | -| <a id="groupvaluestreamanalyticsflowmetricsdeploymentcountto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="groupvaluestreamanalyticsflowmetricsdeploymentcountto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `GroupValueStreamAnalyticsFlowMetrics.issueCount` @@ -15821,11 +15858,11 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="groupvaluestreamanalyticsflowmetricsissuecountassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsissuecountauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="groupvaluestreamanalyticsflowmetricsissuecountfrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="groupvaluestreamanalyticsflowmetricsissuecountfrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="groupvaluestreamanalyticsflowmetricsissuecountlabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsissuecountmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsissuecountprojectids"></a>`projectIds` | [`[ID!]`](#id) | Project IDs within the group hierarchy. | -| <a id="groupvaluestreamanalyticsflowmetricsissuecountto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="groupvaluestreamanalyticsflowmetricsissuecountto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `GroupValueStreamAnalyticsFlowMetrics.issuesCompletedCount` @@ -15839,11 +15876,11 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountfrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountfrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountlabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountprojectids"></a>`projectIds` | [`[ID!]`](#id) | Project IDs within the group hierarchy. | -| <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="groupvaluestreamanalyticsflowmetricsissuescompletedcountto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `GroupValueStreamAnalyticsFlowMetrics.leadTime` @@ -15857,11 +15894,11 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="groupvaluestreamanalyticsflowmetricsleadtimeassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsleadtimeauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="groupvaluestreamanalyticsflowmetricsleadtimefrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="groupvaluestreamanalyticsflowmetricsleadtimefrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="groupvaluestreamanalyticsflowmetricsleadtimelabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsleadtimemilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | | <a id="groupvaluestreamanalyticsflowmetricsleadtimeprojectids"></a>`projectIds` | [`[ID!]`](#id) | Project IDs within the group hierarchy. | -| <a id="groupvaluestreamanalyticsflowmetricsleadtimeto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="groupvaluestreamanalyticsflowmetricsleadtimeto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ### `GroupWikiRepositoryRegistry` @@ -20447,10 +20484,10 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="projectvaluestreamanalyticsflowmetricscycletimeassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="projectvaluestreamanalyticsflowmetricscycletimeauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="projectvaluestreamanalyticsflowmetricscycletimefrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="projectvaluestreamanalyticsflowmetricscycletimefrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="projectvaluestreamanalyticsflowmetricscycletimelabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="projectvaluestreamanalyticsflowmetricscycletimemilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | -| <a id="projectvaluestreamanalyticsflowmetricscycletimeto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="projectvaluestreamanalyticsflowmetricscycletimeto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `ProjectValueStreamAnalyticsFlowMetrics.deploymentCount` @@ -20462,8 +20499,8 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | Name | Type | Description | | ---- | ---- | ----------- | -| <a id="projectvaluestreamanalyticsflowmetricsdeploymentcountfrom"></a>`from` | [`Time!`](#time) | After the date. | -| <a id="projectvaluestreamanalyticsflowmetricsdeploymentcountto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="projectvaluestreamanalyticsflowmetricsdeploymentcountfrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | +| <a id="projectvaluestreamanalyticsflowmetricsdeploymentcountto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `ProjectValueStreamAnalyticsFlowMetrics.issueCount` @@ -20477,10 +20514,10 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="projectvaluestreamanalyticsflowmetricsissuecountassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="projectvaluestreamanalyticsflowmetricsissuecountauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="projectvaluestreamanalyticsflowmetricsissuecountfrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="projectvaluestreamanalyticsflowmetricsissuecountfrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="projectvaluestreamanalyticsflowmetricsissuecountlabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="projectvaluestreamanalyticsflowmetricsissuecountmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | -| <a id="projectvaluestreamanalyticsflowmetricsissuecountto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="projectvaluestreamanalyticsflowmetricsissuecountto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `ProjectValueStreamAnalyticsFlowMetrics.issuesCompletedCount` @@ -20494,10 +20531,10 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountfrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountfrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountlabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | -| <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="projectvaluestreamanalyticsflowmetricsissuescompletedcountto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ##### `ProjectValueStreamAnalyticsFlowMetrics.leadTime` @@ -20511,10 +20548,10 @@ Returns [`ValueStreamAnalyticsMetric`](#valuestreamanalyticsmetric). | ---- | ---- | ----------- | | <a id="projectvaluestreamanalyticsflowmetricsleadtimeassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the issue. | | <a id="projectvaluestreamanalyticsflowmetricsleadtimeauthorusername"></a>`authorUsername` | [`String`](#string) | Username of the author of the issue. | -| <a id="projectvaluestreamanalyticsflowmetricsleadtimefrom"></a>`from` | [`Time!`](#time) | After the date. | +| <a id="projectvaluestreamanalyticsflowmetricsleadtimefrom"></a>`from` | [`Time!`](#time) | Timestamp marking the start date and time. | | <a id="projectvaluestreamanalyticsflowmetricsleadtimelabelnames"></a>`labelNames` | [`[String!]`](#string) | Labels applied to the issue. | | <a id="projectvaluestreamanalyticsflowmetricsleadtimemilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Milestone applied to the issue. | -| <a id="projectvaluestreamanalyticsflowmetricsleadtimeto"></a>`to` | [`Time!`](#time) | Before the date. | +| <a id="projectvaluestreamanalyticsflowmetricsleadtimeto"></a>`to` | [`Time!`](#time) | Timestamp marking the end date and time. | ### `ProjectWikiRepositoryRegistry` @@ -25701,6 +25738,12 @@ A `AuditEventsExternalAuditEventDestinationID` is a global ID. It is encoded as An example `AuditEventsExternalAuditEventDestinationID` is: `"gid://gitlab/AuditEvents::ExternalAuditEventDestination/1"`. +### `AuditEventsInstanceExternalAuditEventDestinationID` + +A `AuditEventsInstanceExternalAuditEventDestinationID` is a global ID. It is encoded as a string. + +An example `AuditEventsInstanceExternalAuditEventDestinationID` is: `"gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1"`. + ### `AuditEventsStreamingHeaderID` A `AuditEventsStreamingHeaderID` is a global ID. It is encoded as a string. diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md index b9c8e9e1e09..b0c5f3a6a69 100644 --- a/doc/ci/pipelines/index.md +++ b/doc/ci/pipelines/index.md @@ -194,6 +194,7 @@ In this example: > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363660) in GitLab 15.5 [with a flag](../../administration/feature_flags.md) named `run_pipeline_graphql`. Disabled by default. > - The `options` keyword was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105502) in GitLab 15.7. > - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106038) in GitLab 15.7. Feature flag `run_pipeline_graphql` removed. +> - The variables list sometimes did not populate correctly due to [a bug](https://gitlab.com/gitlab-org/gitlab/-/issues/386245), which was resolved in GitLab 15.9. You can define an array of CI/CD variable values the user can select from when running a pipeline manually. These values are in a dropdown list in the **Run pipeline** page. Add the list of diff --git a/doc/development/api_graphql_styleguide.md b/doc/development/api_graphql_styleguide.md index db12f79c821..15b587e3b1e 100644 --- a/doc/development/api_graphql_styleguide.md +++ b/doc/development/api_graphql_styleguide.md @@ -1713,8 +1713,8 @@ object on the mutation. This would allow you to use the When a user is not allowed to perform the action, or an object is not found, we should raise a -`Gitlab::Graphql::Errors::ResourceNotAvailable` error which is -correctly rendered to the clients. +`Gitlab::Graphql::Errors::ResourceNotAvailable` by calling `raise_resource_not_available_error!` +from in the `resolve` method. ### Errors in mutations diff --git a/doc/development/i18n/externalization.md b/doc/development/i18n/externalization.md index 1d3c5e2ec8f..ac14b1b5ea2 100644 --- a/doc/development/i18n/externalization.md +++ b/doc/development/i18n/externalization.md @@ -39,7 +39,7 @@ The following tools are used: - [`gettext_i18n_rails_js`](https://github.com/webhippie/gettext_i18n_rails_js): this gem makes the translations available in JavaScript. It provides the following Rake task: - - `rake gettext:po_to_json`: reads the contents of the PO files and generates JSON files that + - `rake gettext:compile`: reads the contents of the PO files and generates JS files which contain all the available translations. - PO editor: there are multiple applications that can help us work with PO files. A good option is @@ -1006,4 +1006,4 @@ Suppose you want to add translations for a new language, for example, French: To manually test Vue translations: 1. Change the GitLab localization to another language than English. -1. Generate JSON files using `bin/rake gettext:po_to_json` or `bin/rake gettext:compile`. +1. Generate JSON files using `bin/rake gettext:compile`. diff --git a/doc/integration/jira/issues.md b/doc/integration/jira/issues.md index d75d8a434c1..086d478ac15 100644 --- a/doc/integration/jira/issues.md +++ b/doc/integration/jira/issues.md @@ -10,12 +10,14 @@ You can [manage Jira issues directly in GitLab](configure.md). You can then refer to Jira issues by ID in GitLab commits and merge requests. The Jira issue IDs must be in uppercase. -## Reference Jira issues +## Cross-reference GitLab activity and Jira issues With this integration, you can cross-reference Jira issues while you work in -GitLab issues and merge requests. Mention a Jira issue in a GitLab issue, -merge request, or comment, and GitLab adds a formatted comment to the Jira issue. -The comment links back to your work in GitLab. +GitLab issues, merge requests, and Git. +When you mention a Jira issue in a GitLab issue, merge request, comment, or commit: + +- GitLab links to the Jira issue from the mention in GitLab. +- GitLab adds a formatted comment to the Jira issue that links back to the issue, merge request, or commit in GitLab. For example, when this commit refers to a `GIT-1` Jira issue: @@ -23,9 +25,9 @@ For example, when this commit refers to a `GIT-1` Jira issue: git commit -m "GIT-1 this is a test commit" ``` -GitLab adds to that issue: +GitLab adds to that Jira issue: -- A reference in the **Issue links** section +- A reference in the **Web links** section - A comment in the **Activity** section that follows this format: ```plaintext @@ -33,11 +35,15 @@ GitLab adds to that issue: ENTITY_TITLE ``` -- `USER`: The name of the user who mentioned the issue, linked to their GitLab user profile. -- `COMMENTLINK`: A link to where the Jira issue was mentioned. -- `RESOURCE_NAME`: The type of resource, such as a commit or merge request, which referenced the issue. -- `PROJECT_NAME`: The GitLab project name. -- `ENTITY_TITLE`: The title of the merge request, or the first line of the commit. + - `USER`: Name of the user who has mentioned the Jira issue with a link to their GitLab user profile. + - `RESOURCE_NAME`: Type of resource (for example, a GitLab commit, issue, or merge request) that has referenced the Jira issue. + - `PROJECT_NAME`: GitLab project name. + - `COMMENTLINK`: Link to where the Jira issue is mentioned. + - `ENTITY_TITLE`: Title of the GitLab commit (first line), issue, or merge request. + +Only a single cross-reference comment appears in Jira per GitLab issue, merge request, or commit. +For example, multiple comments on a GitLab merge request that reference a Jira issue +create only a single cross-reference comment back to that merge request in Jira. You can [disable comments](#disable-comments-on-jira-issues) on issues. diff --git a/doc/integration/omniauth.md b/doc/integration/omniauth.md index 907d96d8185..cd287d70ca3 100644 --- a/doc/integration/omniauth.md +++ b/doc/integration/omniauth.md @@ -46,7 +46,7 @@ Linux package, Docker, and self-compiled | Helm chart | Description | Default va ----------------------------|------------|-------------|----------- `allow_single_sign_on` | `allowSingleSignOn` | List of providers that automatically create a GitLab account. The provider names are available in the **OmniAuth provider name** column in the [supported providers table](#supported-providers). | `false`, which means that signing in using your OmniAuth provider account without a pre-existing GitLab account is not allowed. You must create a GitLab account first, and then connect it to your OmniAuth provider account through your profile settings. `auto_link_ldap_user` | `autoLinkLdapUser` | Creates an LDAP identity in GitLab for users that are created through an OmniAuth provider. You can enable this setting if you have [LDAP integration](../administration/auth/ldap/index.md) enabled. Requires the `uid` of the user to be the same in both LDAP and the OmniAuth provider. | `false` -`block_auto_created_users` | `blockAutoCreatedUsers` | Blocks users that are automatically created from signing in until they are approved by an administrator. | `true`. If you set the value to `false`, make sure you define providers that you can control, like SAML or Google. Otherwise, any user on the internet can sign in to GitLab without an administrator's approval. +`block_auto_created_users` | `blockAutoCreatedUsers` | Places automatically-created users in a [Pending approval](../user/admin_area/moderate_users.md#users-pending-approval) state (unable to sign in) until they are approved by an administrator. | `true`. If you set the value to `false`, make sure you define providers that you can control, like SAML or Google. Otherwise, any user on the internet can sign in to GitLab without an administrator's approval. ### Configure initial settings diff --git a/doc/update/removals.md b/doc/update/removals.md index 2085ce94748..64bbaef0f9e 100644 --- a/doc/update/removals.md +++ b/doc/update/removals.md @@ -136,6 +136,16 @@ In GitLab 13.9, we updated the Omnibus GitLab package and GitLab Helm chart 4.9 GitLab 16.0, we have removed support for Redis 5. If you are using your own Redis 5.0 instance, you must upgrade it to Redis 6.0 or later before upgrading to GitLab 16.0 or later. +### Remove the deprecated `environment_tier` parameter from the DORA API + +WARNING: +This is a [breaking change](https://docs.gitlab.com/ee/development/deprecation_guidelines/). +Review the details carefully before upgrading. + +The `environment_tier` parameter has been superseded by the `environment_tiers` parameter. + +If you use the `environment_tier` parameter in your integration (REST or GraphQL) then you need to replace it with the `environment_tiers` parameter which accepts an array of strings. + ### Removed `external` field from GraphQL `ReleaseAssetLink` type WARNING: diff --git a/doc/user/profile/index.md b/doc/user/profile/index.md index d6aae38df2b..b7d8f6aba58 100644 --- a/doc/user/profile/index.md +++ b/doc/user/profile/index.md @@ -309,6 +309,21 @@ You can follow or unfollow users from either: In [GitLab 15.5 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/360755), the maximum number of users you can follow is 300. +### Disable following and being followed by other users + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325558) in GitLab 16.0 [with a flag](../feature_flags.md) named `disable_follow_users`. Disabled by default. + +You can disable following and being followed by other users. + +1. On the top bar, in the upper-right corner, select your avatar. +1. Select **Edit profile**. +1. Select **Preferences**. +1. Clear the **Enable follow users** checkbox. +1. Select **Save changes**. + +NOTE: +When this feature is being disabled, all current followed/following connections are deleted. + ## View your activity GitLab tracks [user contribution activity](contributions_calendar.md). diff --git a/doc/user/project/remote_development/index.md b/doc/user/project/remote_development/index.md index fc03bab80b6..66fde8b7b0e 100644 --- a/doc/user/project/remote_development/index.md +++ b/doc/user/project/remote_development/index.md @@ -4,7 +4,7 @@ group: IDE info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments --- -# Remote development **(FREE)** +# Remote development (Beta) **(FREE)** > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95169) in GitLab 15.4 [with a flag](../../../administration/feature_flags.md) named `vscode_web_ide`. Disabled by default. > - [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/371084) in GitLab 15.7. @@ -14,15 +14,12 @@ FLAG: On self-managed GitLab, by default this feature is available. To hide the feature, ask an administrator to [disable the feature flag](../../../administration/feature_flags.md) named `vscode_web_ide`. On GitLab.com, this feature is available. The feature is not ready for production use. WARNING: -This feature is an [Experiment](../../../policy/alpha-beta-support.md#experiment) and subject to change without notice. - -DISCLAIMER: -This page contains information related to upcoming products, features, and functionality. -It is important to note that the information presented is for informational purposes only. -Please do not rely on this information for purchasing or planning purposes. -As with all projects, the items mentioned on this page are subject to change or delay. -The development, release, and timing of any products, features, or functionality remain at the -sole discretion of GitLab Inc. +This feature is in [Beta](../../../policy/alpha-beta-support.md#beta) and subject to change without notice. + +You can use remote development to write and compile code hosted on GitLab. With remote development, you can: + +- Create a secure development environment in the cloud. +- Connect to that environment from your local machine through a web browser or client-based solution. ## Web IDE as a frontend diff --git a/doc/user/workspace/index.md b/doc/user/workspace/index.md index ca404702d72..39b0b9849d7 100644 --- a/doc/user/workspace/index.md +++ b/doc/user/workspace/index.md @@ -1,11 +1,195 @@ --- -redirect_to: '../organization/index.md' -remove_date: '2023-06-13' +stage: Create +group: IDE +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments --- -This document was moved to [another location](../organization/index.md). +# Workspaces (Beta) **(PREMIUM)** -<!-- This redirect file can be deleted after <2023-06-13>. --> -<!-- Redirects that point to other docs in the same project expire in three months. --> -<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. --> -<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> +> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/10122) in GitLab 16.0 [with a flag](../../administration/feature_flags.md) named `remote_development_feature_flag`. Disabled by default. + +FLAG: +On self-managed GitLab, by default this feature is not available. To make it available, ask an administrator to [enable the feature flag](../../administration/feature_flags.md) named `remote_development_feature_flag`. On GitLab.com, this feature is not available. The feature is not ready for production use. + +WARNING: +This feature is in [Beta](../../policy/alpha-beta-support.md#beta) and subject to change without notice. To leave your feedback, see the [feedback issue](https://gitlab.com/gitlab-org/gitlab/-/issues/410031). + +You can use workspaces to create and manage isolated development environments for your projects. These environments ensure that different projects don't interfere with each other. Each workspace includes its own set of dependencies, libraries, and tools, which you can customize to meet the specific needs of each project. + +With workspaces, you can switch between different development environments and manage your code more effectively. + +## Run a workspace + +To run a workspace: + +1. Set up a Kubernetes cluster that supports the GitLab agent for Kubernetes. See the [supported Kubernetes versions](../clusters/agent/index.md#gitlab-agent-for-kubernetes-supported-cluster-versions). +1. Ensure autoscaling for Kubernetes cluster is enabled. +1. In the Kubernetes cluster, verify that a [default storage class](https://kubernetes.io/docs/concepts/storage/storage-classes/) is defined so that volumes can be dynamically provisioned for each workspace. +1. [Install the GitLab agent for Kubernetes](../clusters/agent/install/index.md). +1. Configure remote development settings for the GitLab agent with the provided snippet. +1. Install an Ingress controller of your choice (for example, `ingress-nginx`), and make it accessible over a domain. +1. [Install `gitlab-workspaces-proxy`](https://gitlab.com/gitlab-org/remote-development/gitlab-workspaces-proxy#installation-instructions). +1. In each public project you want to use this feature for, define a [devfile](#devfile). Ensure the container images used in the devfile support [arbitrary user IDs](https://docs.openshift.com/container-platform/4.12/openshift_images/create-images.html#use-uid_create-images). + +## Configure the GitLab agent for Kubernetes + +To provision and communicate with the workspace, the GitLab agent for Kubernetes must be running on your cluster. To configure the GitLab agent for Kubernetes: + +1. [Install GitLab Runner on the machine where you want to configure the agent](https://docs.gitlab.com/runner/install/). +1. Deploy the GitLab agent with the provided [YAML manifests](https://gitlab.com/gitlab-examples/ops/gitops-demo/k8s-agents/-/tree/main/manifests). The system does not impose any restrictions on the manner in which pods interact with each other. See [Pod interaction in a cluster](#pod-interaction-in-a-cluster). +1. Customize the GitLab agent configuration by editing the agent `ConfigMap`. `ConfigMap` is used to configure settings such as the GitLab URL and the registration token. For more information about the available configuration options, see [Connecting a Kubernetes cluster with GitLab](../clusters/agent/index.md). +1. Deploy the updated `ConfigMap` by running this command: + + ```plaintext + kubectl apply -f <path-to-configmap.yaml> + ``` + +1. Configure the agent to run on specific Kubernetes nodes by using labels: + + 1. To assign labels to nodes, use the `kubectl label` command. + 1. To configure the agent to only run on nodes with a specific label, use the `nodeSelector` field in the GitLab agent deployment YAML. + +You can remove an agent by using the GitLab UI or the GraphQL API. The agent and any associated tokens are removed from GitLab, but no changes are made in your Kubernetes cluster. You must clean up those resources manually. See [Remove an agent](../clusters/agent/work_with_agent.md#remove-an-agent). + +## Devfile + +A devfile is a file that defines a development environment by specifying the necessary tools, languages, runtimes, and other components for a GitLab project. + +Workspaces have built-in support for devfiles. You can specify a devfile for your project in the GitLab configuration file. The devfile is used to automatically configure the development environment with the defined specifications. + +This way, you can create consistent and reproducible development environments regardless of the machine or platform you use. + +### Relevant schema properties + +GitLab only supports the `container` component in [devfile 2.2.0](https://devfile.io/docs/2.2.0/devfile-schema). +Use this component to define a container image as the execution environment for a devfile workspace. +You can specify the base image, dependencies, and other settings. + +Only these properties are relevant to the GitLab implementation of devfile: + +| Properties | Definition | +|----------------| ----------------------------------------------------------------------------------| +| `image` | Name of the container image to use for the workspace. | +| `memoryLimit` | Maximum amount of memory the container can use. | +| `cpuLimit` | Maximum amount of CPU the container can use. | +| `mountSources` | Whether to mount the source code directory from the workspace into the container. | +| `workingDir` | Working directory to use in the container. | +| `commands` | Commands to run in the container. | +| `args` | Arguments to pass to the commands. | +| `ports` | Port mappings to expose from the container. | + +### Example definition + +The following is an example devfile: + +```yaml +schemaVersion: 2.2.0 +components: + - name: tooling-container + attributes: + gl/inject-editor: true + container: + image: registry.gitlab.com/gitlab-org/remote-development/gitlab-remote-development-docs/debian-bullseye-ruby-3.2-node-18.12:rubygems-3.4-git-2.33-lfs-2.9-yarn-1.22-graphicsmagick-1.3.36-gitlab-workspaces + endpoints: + - name: http-3000 + targetPort: 3000 +``` + +For other syntax examples, see the [`demos` projects](https://gitlab.com/gitlab-org/remote-development/demos). + +## Create a workspace + +Prerequisite: + +- You must have [configured the GitLab agent for Kubernetes](#configure-the-gitlab-agent-for-kubernetes). + +To create a workspace in GitLab: + +1. On the top bar, select **Main menu > Projects** and find your project. +1. In the root directory of your project, create a file named `.devfile.yaml`. +1. On the left sidebar, select **Workspaces**. +1. In the upper right, select **New workspace**. +1. From the **Select project** dropdown list, select a project with a `.devfile.yaml` file. You can only create workspaces for public projects. +1. From the **Select cluster agent** dropdown list, select a cluster agent owned by the group the project belongs to. +1. In **Time before automatic termination**, enter the number of hours until the workspace automatically terminates. This timeout is a safety measure to prevent a workspace from consuming excessive resources or running indefinitely. +1. Select **Create Workspace**. + +The workspace might take a few minutes to start. When the workspace is ready, use the [Web IDE](../project/web_ide/index.md) to access your development environment. +You also have access to the terminal and can install any necessary dependencies. + +## Web IDE + +Workspaces are bundled with the Web IDE by default. The Web IDE is the only code editor available for workspaces. + +The Web IDE is powered by the [GitLab VS Code fork](https://gitlab.com/gitlab-org/gitlab-web-ide-vscode-fork). For more information, see the [Web IDE](../project/web_ide/index.md). + +## Private repositories + +You cannot create a workspace for a private repository because you cannot verify your identity. You can only clone or access public repositories. + +You can clone a public repository over: + +- **HTTPS**: You must provide a personal access token every time you access a public repository or create a workspace. This token acts as a password and grants access to a specific resource. +- **SSH**: You don't have to enter your password or personal access token when you access a public repository. However, you must provide your SSH key or personal access token every time you create a workspace. + +## Pod interaction in a cluster + +The system does not impose any restrictions on the manner in which pods interact with each other. It's the client's responsibility to restrict network access to the Kubernetes control plane as GitLab cannot determine the location of the API. + +Because of this requirement, you might want to isolate this feature from other containers in your cluster. + +## Networking and security + +Workspaces are isolated environments that are only provisioned when you start a new instance. These environments are isolated from the host machine. + +Workspaces use virtual network interfaces to connect to the internet and other resources, which helps prevent conflicts with the host machine's network settings. + +### SSL, TLS, and HTTPS + +Workspaces use SSL and TLS to provide secure and isolated development environments that you can access from anywhere. + +Workspaces support HTTPS, which uses Transport Layer Security (TLS) to encrypt data sent between your machine and the workspace. Workspaces generate and manage their own SSL certificates for HTTPS connections. These SSL certificates are automatically renewed. + +Workspaces also support Let's Encrypt SSL certificates, which you can use to enable HTTPS connections with a custom domain name. + +### Workspace authorization + +To use workspaces, you must have a GitLab account with the necessary permissions to create or access a repository. GitLab authentication is used to control access to workspaces. Only users who have been granted access to a repository can create or access workspaces associated with that repository. + +GitLab also provides administrators with the ability to: + +- Limit who can create workspaces. +- Set resource limits for workspaces. +- Configure the default environment for workspaces. + +## Workspace lifecycle + +The lifecycle of a workspace is divided into the following stages: + +- **Creation**: A workspace is created when you open a new workspace session from a GitLab repository. GitLab creates a virtual machine instance in the cloud with the necessary software and tools for your specific project. +- **Initialization**: The instance is initialized with the project files and dependencies when you clone the repository or pull from a container registry. +- **Usage**: The workspace is ready to use. You can use the IDE and command-line tools that come with the workspace or install any other tools. +- **Persistence**: Any changes made to the project files and dependencies in the workspace persist to the GitLab repository in real-time. This way, these changes can be synced and shared with other collaborators. +- **Deletion**: When you're finished with the workspace session, you can suspend or delete the workspace. Suspending the workspace pauses billing but keeps the instance running. Deleting the workspace removes the instance and all associated data permanently. + +## Container best practices + +### Set a user to run a container in Kubernetes + +GitLab cannot predict which user is the best fit to run a container in Kubernetes. You must set the user yourself to ensure the container runs correctly. + +To set a user to run a container in Kubernetes, follow these best practices: + +- When you create a [devfile](#devfile) for the container, ensure the container images used in the devfile support [arbitrary user IDs](https://docs.openshift.com/container-platform/4.12/openshift_images/create-images.html#use-uid_create-images). +- For each container in your project, you must explicitly set the Linux user ID to a random value. The default value for GitLab is `5001`. +- You must set the fields to prevent any privilege escalation for the Linux user. + +CRI-O, the container runtime interface used by OpenShift, has a default group ID of `0` for all containers. If the container images support arbitrary user IDs, all files become editable as a Linux root group member. To solve this issue, GitLab sets arbitrary user IDs for all containers. + +### Architectural support + +Workspaces use the AMD64 architecture because modern software is generally compatible with this architecture. If you're using other architectures (such as ARM), you can cross-compile your code to run on AMD64 systems. + +### Namespace deletion + +To delete a namespace, Kubernetes administrators must manually delete the namespace. If you're running a workspace on your own environment, it's your responsibility to manage and delete namespaces. |