diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-27 21:09:41 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-27 21:09:41 +0300 |
commit | f569792df8a25caa1bed9c448c8c4c3f837f5164 (patch) | |
tree | 8c2ed7dae5ba132a97c0321a7649174e5832d637 /doc | |
parent | c2908ec6a0d7b62996cdb8da0350705bdad691bf (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc')
-rw-r--r-- | doc/administration/monitoring/prometheus/gitlab_metrics.md | 1 | ||||
-rw-r--r-- | doc/api/README.md | 4 | ||||
-rw-r--r-- | doc/api/graphql/reference/gitlab_schema.graphql | 58 | ||||
-rw-r--r-- | doc/api/graphql/reference/gitlab_schema.json | 175 | ||||
-rw-r--r-- | doc/api/graphql/reference/index.md | 13 | ||||
-rw-r--r-- | doc/development/api_styleguide.md | 8 | ||||
-rw-r--r-- | doc/development/ee_features.md | 12 | ||||
-rw-r--r-- | doc/development/geo/framework.md | 4 | ||||
-rw-r--r-- | doc/development/logging.md | 2 | ||||
-rw-r--r-- | doc/user/application_security/dependency_scanning/index.md | 3 | ||||
-rw-r--r-- | doc/user/project/issues/design_management.md | 1 |
11 files changed, 266 insertions, 15 deletions
diff --git a/doc/administration/monitoring/prometheus/gitlab_metrics.md b/doc/administration/monitoring/prometheus/gitlab_metrics.md index 7921a10301d..fff7762bd99 100644 --- a/doc/administration/monitoring/prometheus/gitlab_metrics.md +++ b/doc/administration/monitoring/prometheus/gitlab_metrics.md @@ -36,6 +36,7 @@ The following metrics are available: | `gitlab_cache_misses_total` | Counter | 10.2 | Cache read miss | controller, action | | `gitlab_cache_operation_duration_seconds` | Histogram | 10.2 | Cache access time | | | `gitlab_cache_operations_total` | Counter | 12.2 | Cache operations by controller/action | controller, action, operation | +| `gitlab_ci_pipeline_creation_duration_seconds` | Histogram | 13.0 | Time in seconds it takes to create a CI/CD pipeline | | | `job_waiter_started_total` | Counter | 12.9 | Number of batches of jobs started where a web request is waiting for the jobs to complete | worker | | `job_waiter_timeouts_total` | Counter | 12.9 | Number of batches of jobs that timed out where a web request is waiting for the jobs to complete | worker | | `gitlab_database_transaction_seconds` | Histogram | 12.1 | Time spent in database transactions, in seconds | | diff --git a/doc/api/README.md b/doc/api/README.md index 99d74aab83f..e08006a7f7f 100644 --- a/doc/api/README.md +++ b/doc/api/README.md @@ -417,7 +417,7 @@ The response header includes a link to the next page. For example: ```http HTTP/1.1 200 OK ... -Link: <https://gitlab.example.com/api/v4/projects?pagination=keyset&per_page=50&order_by=id&sort=asc&id_after=42>; rel="next" +Links: <https://gitlab.example.com/api/v4/projects?pagination=keyset&per_page=50&order_by=id&sort=asc&id_after=42>; rel="next" Status: 200 OK ... ``` @@ -425,7 +425,7 @@ Status: 200 OK The link to the next page contains an additional filter `id_after=42` which excludes records we have retrieved already. Note the type of filter depends on the `order_by` option used and we may have more than one additional filter. -When the end of the collection has been reached and there are no additional records to retrieve, the `Link` header is absent and the resulting array is empty. +When the end of the collection has been reached and there are no additional records to retrieve, the `Links` header is absent and the resulting array is empty. We recommend using only the given link to retrieve the next page instead of building your own URL. Apart from the headers shown, we don't expose additional pagination headers. diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 3522a5a50eb..9f5f0278f91 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -411,6 +411,56 @@ type BoardListEdge { node: BoardList } +""" +Autogenerated input type of BoardListUpdateLimitMetrics +""" +input BoardListUpdateLimitMetricsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new limit metric type for the list. + """ + limitMetric: ListLimitMetric + + """ + The global ID of the list. + """ + listId: ID! + + """ + The new maximum issue count limit. + """ + maxIssueCount: Int + + """ + The new maximum issue weight limit. + """ + maxIssueWeight: Int +} + +""" +Autogenerated return type of BoardListUpdateLimitMetrics +""" +type BoardListUpdateLimitMetricsPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Reasons why the mutation failed. + """ + errors: [String!]! + + """ + The updated list + """ + list: BoardList +} + type Commit { """ Author of the commit @@ -4460,12 +4510,17 @@ scalar JSON type JiraImport { """ + Timestamp of when the Jira import was created + """ + createdAt: Time + + """ Project key for the imported Jira project """ jiraProjectKey: String! """ - Timestamp of when the Jira import was created + Timestamp of when the Jira import was scheduled """ scheduledAt: Time @@ -5689,6 +5744,7 @@ enum MoveType { type Mutation { addAwardEmoji(input: AddAwardEmojiInput!): AddAwardEmojiPayload adminSidekiqQueuesDeleteJobs(input: AdminSidekiqQueuesDeleteJobsInput!): AdminSidekiqQueuesDeleteJobsPayload + boardListUpdateLimitMetrics(input: BoardListUpdateLimitMetricsInput!): BoardListUpdateLimitMetricsPayload createDiffNote(input: CreateDiffNoteInput!): CreateDiffNotePayload createEpic(input: CreateEpicInput!): CreateEpicPayload createImageDiffNote(input: CreateImageDiffNoteInput!): CreateImageDiffNotePayload diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index 4c8fb099faa..140519d403e 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -1263,6 +1263,138 @@ "possibleTypes": null }, { + "kind": "INPUT_OBJECT", + "name": "BoardListUpdateLimitMetricsInput", + "description": "Autogenerated input type of BoardListUpdateLimitMetrics", + "fields": null, + "inputFields": [ + { + "name": "listId", + "description": "The global ID of the list.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "limitMetric", + "description": "The new limit metric type for the list.", + "type": { + "kind": "ENUM", + "name": "ListLimitMetric", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "maxIssueCount", + "description": "The new maximum issue count limit.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "maxIssueWeight", + "description": "The new maximum issue weight limit.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "BoardListUpdateLimitMetricsPayload", + "description": "Autogenerated return type of BoardListUpdateLimitMetrics", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "Reasons why the mutation failed.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "list", + "description": "The updated list", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "BoardList", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { "kind": "SCALAR", "name": "Boolean", "description": "Represents `true` or `false` values.", @@ -12636,6 +12768,20 @@ "description": null, "fields": [ { + "name": "createdAt", + "description": "Timestamp of when the Jira import was created", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "jiraProjectKey", "description": "Project key for the imported Jira project", "args": [ @@ -12655,7 +12801,7 @@ }, { "name": "scheduledAt", - "description": "Timestamp of when the Jira import was created", + "description": "Timestamp of when the Jira import was scheduled", "args": [ ], @@ -16353,6 +16499,33 @@ "deprecationReason": null }, { + "name": "boardListUpdateLimitMetrics", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "BoardListUpdateLimitMetricsInput", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "BoardListUpdateLimitMetricsPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "createDiffNote", "description": null, "args": [ diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index af126f48c50..6205c97d77c 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -97,6 +97,16 @@ Represents a list for an issue board | `position` | Int | Position of list within the board | | `title` | String! | Title of the list | +## BoardListUpdateLimitMetricsPayload + +Autogenerated return type of BoardListUpdateLimitMetrics + +| Name | Type | Description | +| --- | ---- | ---------- | +| `clientMutationId` | String | A unique identifier for the client performing the mutation. | +| `errors` | String! => Array | Reasons why the mutation failed. | +| `list` | BoardList | The updated list | + ## Commit | Name | Type | Description | @@ -667,8 +677,9 @@ Autogenerated return type of IssueSetWeight | Name | Type | Description | | --- | ---- | ---------- | +| `createdAt` | Time | Timestamp of when the Jira import was created | | `jiraProjectKey` | String! | Project key for the imported Jira project | -| `scheduledAt` | Time | Timestamp of when the Jira import was created | +| `scheduledAt` | Time | Timestamp of when the Jira import was scheduled | | `scheduledBy` | User | User that started the Jira import | ## JiraImportStartPayload diff --git a/doc/development/api_styleguide.md b/doc/development/api_styleguide.md index 25c8cbd3fde..a9ce1bc066e 100644 --- a/doc/development/api_styleguide.md +++ b/doc/development/api_styleguide.md @@ -98,6 +98,14 @@ For instance: Model.create(foo: params[:foo]) ``` +## Array types + +With Grape v1.3+, Array types must be defined with a `coerce_with` +block, or parameters will fail to validate when passed a string from an +API request. See the [Grape upgrading +documentation](https://github.com/ruby-grape/grape/blob/master/UPGRADING.md#ensure-that-array-types-have-explicit-coercions) +for more details. + ## Using HTTP status helpers For non-200 HTTP responses, use the provided helpers in `lib/api/helpers.rb` to ensure correct behavior (`not_found!`, `no_content!` etc.). These will `throw` inside Grape and abort the execution of your endpoint. diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md index c9fd1b75606..1d03e93ab79 100644 --- a/doc/development/ee_features.md +++ b/doc/development/ee_features.md @@ -513,12 +513,12 @@ do that, so we'll follow regular object-oriented practices that we define the interface first here. For example, suppose we have a few more optional parameters for EE. We can move the -paramters out of the `Grape::API` class to a helper module, so we can inject it +parameters out of the `Grape::API::Instance` class to a helper module, so we can inject it before it would be used in the class. ```ruby module API - class Projects < Grape::API + class Projects < Grape::API::Instance helpers Helpers::ProjectsHelpers end end @@ -579,7 +579,7 @@ class definition to make it easy and clear: ```ruby module API - class JobArtifacts < Grape::API + class JobArtifacts < Grape::API::Instance # EE::API::JobArtifacts would override the following helpers helpers do def authorize_download_artifacts! @@ -623,7 +623,7 @@ route. Something like this: ```ruby module API - class MergeRequests < Grape::API + class MergeRequests < Grape::API::Instance helpers do # EE::API::MergeRequests would override the following helpers def update_merge_request_ee(merge_request) @@ -692,7 +692,7 @@ least argument. We would approach this as follows: ```ruby # api/merge_requests/parameters.rb module API - class MergeRequests < Grape::API + class MergeRequests < Grape::API::Instance module Parameters def self.update_params_at_least_one_of %i[ @@ -708,7 +708,7 @@ API::MergeRequests::Parameters.prepend_if_ee('EE::API::MergeRequests::Parameters # api/merge_requests.rb module API - class MergeRequests < Grape::API + class MergeRequests < Grape::API::Instance params do at_least_one_of(*Parameters.update_params_at_least_one_of) end diff --git a/doc/development/geo/framework.md b/doc/development/geo/framework.md index 989949a7ca1..83809d1fd3d 100644 --- a/doc/development/geo/framework.md +++ b/doc/development/geo/framework.md @@ -270,7 +270,7 @@ For example, to add support for files referenced by a `Widget` model with a ```ruby # frozen_string_literal: true - class CreateWidgetRegistry < ActiveRecord::Migration[5.2] + class CreateWidgetRegistry < ActiveRecord::Migration[6.0] DOWNTIME = false def change @@ -334,7 +334,7 @@ For example, to add support for files referenced by a `Widget` model with a end ``` -1. Create `ee/spec/models/geo/widget_registry.rb`: +1. Create `ee/spec/models/geo/widget_registry_spec.rb`: ```ruby # frozen_string_literal: true diff --git a/doc/development/logging.md b/doc/development/logging.md index ef2d2d7022d..ba2e879a04e 100644 --- a/doc/development/logging.md +++ b/doc/development/logging.md @@ -360,4 +360,4 @@ end project. See [this example](https://gitlab.com/gitlab-cookbooks/gitlab_fluentd/-/merge_requests/51/diffs). 1. Be sure to update the [GitLab CE/EE documentation](../administration/logs.md) and the [GitLab.com - runbooks](https://gitlab.com/gitlab-com/runbooks/blob/master/howto/logging.md). + runbooks](https://gitlab.com/gitlab-com/runbooks/blob/master/docs/logging/README.md). diff --git a/doc/user/application_security/dependency_scanning/index.md b/doc/user/application_security/dependency_scanning/index.md index c6bd402f57c..ad13fe0c6b4 100644 --- a/doc/user/application_security/dependency_scanning/index.md +++ b/doc/user/application_security/dependency_scanning/index.md @@ -491,6 +491,7 @@ For every language and package manager, add the following to the variables secti ```yaml GEMNASIUM_DB_REMOTE_URL: "gitlab.example.com/gemnasium-db.git" +GIT_SSL_NO_VERIFY: "true" ``` See the following sections for additional instructions on specific languages and package managers. @@ -520,7 +521,7 @@ When using self-signed certificates, add the following job section to the `.gitl ```yaml gemnasium-maven-dependency_scanning: variables: - MAVEN_CLI_OPTS: "-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true" + MAVEN_CLI_OPTS: "-s settings.xml -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true" ``` #### Java (Gradle) projects diff --git a/doc/user/project/issues/design_management.md b/doc/user/project/issues/design_management.md index 1078d0410ed..21e36cf9cad 100644 --- a/doc/user/project/issues/design_management.md +++ b/doc/user/project/issues/design_management.md @@ -86,6 +86,7 @@ Copy-and-pasting has some limitations: - You can paste only one image at a time. When copy/pasting multiple files, only the first one will be uploaded. - All images will be converted to `png` format under the hood, so when you want to copy/paste `gif` file, it will result in broken animation. +- If you are pasting a screenshot from the clipboard, it will be renamed to `design_<timestamp>.png` - Copy/pasting designs is not supported on Internet Explorer. Designs with the same filename as an existing uploaded design will create a new version |