From 79c7e236713d3ac4df48de63018a71ac69f5c2d9 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 14 Oct 2020 03:08:32 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- doc/api/graphql/reference/gitlab_schema.graphql | 162 +++++++++++++---- doc/api/graphql/reference/gitlab_schema.json | 221 ++++++++++++++++++++++-- doc/api/lint.md | 13 +- doc/ci/yaml/README.md | 81 ++++----- doc/user/admin_area/img/admin_wrench.png | Bin 3314 -> 0 bytes doc/user/admin_area/license.md | 112 ++++++------ 6 files changed, 439 insertions(+), 150 deletions(-) delete mode 100644 doc/user/admin_area/img/admin_wrench.png (limited to 'doc') diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index bd231c76b14..fd26d567574 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -1222,8 +1222,8 @@ type BoardEpic implements CurrentUserTodos & Noteable { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -1273,8 +1273,9 @@ type BoardEpic implements CurrentUserTodos & Noteable { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -1282,6 +1283,11 @@ type BoardEpic implements CurrentUserTodos & Noteable { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): EpicConnection """ @@ -4278,6 +4284,11 @@ enum DastSiteProfileValidationStatusEnum { PENDING_VALIDATION } +""" +Date represented in ISO 8601 +""" +scalar Date + """ Autogenerated input type of DeleteAnnotation """ @@ -5893,8 +5904,8 @@ type Epic implements CurrentUserTodos & Noteable { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -5944,8 +5955,9 @@ type Epic implements CurrentUserTodos & Noteable { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -5953,6 +5965,11 @@ type Epic implements CurrentUserTodos & Noteable { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): EpicConnection """ @@ -7381,8 +7398,8 @@ type Group { authorUsername: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -7422,8 +7439,9 @@ type Group { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -7431,6 +7449,11 @@ type Group { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): Epic """ @@ -7453,8 +7476,8 @@ type Group { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -7504,8 +7527,9 @@ type Group { sort: EpicSort """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -7513,6 +7537,11 @@ type Group { Filter epics by state """ state: EpicState + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe ): EpicConnection """ @@ -7715,8 +7744,8 @@ type Group { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -7746,8 +7775,9 @@ type Group { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -7756,6 +7786,11 @@ type Group { """ state: IterationState + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + """ Fuzzy search by title """ @@ -7912,8 +7947,13 @@ type Group { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + A date that the milestone contains + """ + containingDate: Time + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -7938,8 +7978,14 @@ type Group { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + A search string for the title + """ + searchTitle: String + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -7947,6 +7993,16 @@ type Group { Filter milestones by state """ state: MilestoneStateEnum + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + + """ + The title of the milestone + """ + title: String ): MilestoneConnection """ @@ -13755,8 +13811,8 @@ type Project { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -13786,8 +13842,9 @@ type Project { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -13796,6 +13853,11 @@ type Project { """ state: IterationState + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + """ Fuzzy search by title """ @@ -14004,8 +14066,13 @@ type Project { before: String """ - List items within a time frame where items.end_date is between startDate and - endDate parameters (startDate parameter must be present) + A date that the milestone contains + """ + containingDate: Time + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use timeframe.end """ endDate: Time @@ -14030,8 +14097,14 @@ type Project { last: Int """ - List items within a time frame where items.start_date is between startDate - and endDate parameters (endDate parameter must be present) + A search string for the title + """ + searchTitle: String + + """ + List items overlapping a time frame defined by startDate..endDate (if one + date is provided, both must be present). Deprecated in 14.0: Use + timeframe.start """ startDate: Time @@ -14039,6 +14112,16 @@ type Project { Filter milestones by state """ state: MilestoneStateEnum + + """ + List items overlapping the given timeframe + """ + timeframe: Timeframe + + """ + The title of the milestone + """ + title: String ): MilestoneConnection """ @@ -18336,6 +18419,21 @@ interface TimeboxBurnupTimeSeriesInterface { burnupTimeSeries: [BurnupChartDailyTotals!] } +""" +A time-frame defined as a closed inclusive range of two dates +""" +input Timeframe { + """ + The end of the range + """ + end: Date! + + """ + The start of the range + """ + start: Date! +} + type Timelog { """ Timestamp of when the time tracked was spent at. Deprecated in 12.10: Use `spentAt` diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index f70814267ef..7e6266ca26c 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -3181,7 +3181,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -3191,7 +3191,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -3199,6 +3199,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "iid", "description": "IID of the epic, e.g., \"1\"", @@ -11566,6 +11576,16 @@ ], "possibleTypes": null }, + { + "kind": "SCALAR", + "name": "Date", + "description": "Date represented in ISO 8601", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "INPUT_OBJECT", "name": "DeleteAnnotationInput", @@ -16290,7 +16310,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -16300,7 +16320,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -16308,6 +16328,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "iid", "description": "IID of the epic, e.g., \"1\"", @@ -20364,7 +20394,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -20374,7 +20404,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -20382,6 +20412,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "iid", "description": "IID of the epic, e.g., \"1\"", @@ -20503,7 +20543,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -20513,7 +20553,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -20521,6 +20561,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "iid", "description": "IID of the epic, e.g., \"1\"", @@ -21134,7 +21184,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -21144,7 +21194,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -21152,6 +21202,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "state", "description": "Filter iterations by state", @@ -21580,7 +21640,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -21590,7 +21650,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -21598,6 +21658,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "ids", "description": "Array of global milestone IDs, e.g., \"gid://gitlab/Milestone/1\"", @@ -21626,6 +21696,36 @@ }, "defaultValue": null }, + { + "name": "title", + "description": "The title of the milestone", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "searchTitle", + "description": "A search string for the title", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "containingDate", + "description": "A date that the milestone contains", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, { "name": "includeDescendants", "description": "Also return milestones in all subgroups and subprojects", @@ -40165,7 +40265,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -40175,7 +40275,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -40183,6 +40283,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "state", "description": "Filter iterations by state", @@ -40737,7 +40847,7 @@ "args": [ { "name": "startDate", - "description": "List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.start", "type": { "kind": "SCALAR", "name": "Time", @@ -40747,7 +40857,7 @@ }, { "name": "endDate", - "description": "List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)", + "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 14.0: Use timeframe.end", "type": { "kind": "SCALAR", "name": "Time", @@ -40755,6 +40865,16 @@ }, "defaultValue": null }, + { + "name": "timeframe", + "description": "List items overlapping the given timeframe", + "type": { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "ofType": null + }, + "defaultValue": null + }, { "name": "ids", "description": "Array of global milestone IDs, e.g., \"gid://gitlab/Milestone/1\"", @@ -40783,6 +40903,36 @@ }, "defaultValue": null }, + { + "name": "title", + "description": "The title of the milestone", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "searchTitle", + "description": "A search string for the title", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "containingDate", + "description": "A date that the milestone contains", + "type": { + "kind": "SCALAR", + "name": "Time", + "ofType": null + }, + "defaultValue": null + }, { "name": "includeAncestors", "description": "Also return milestones in the project's parent group and its ancestors", @@ -53362,6 +53512,45 @@ } ] }, + { + "kind": "INPUT_OBJECT", + "name": "Timeframe", + "description": "A time-frame defined as a closed inclusive range of two dates", + "fields": null, + "inputFields": [ + { + "name": "start", + "description": "The start of the range", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Date", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "end", + "description": "The end of the range", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Date", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "Timelog", diff --git a/doc/api/lint.md b/doc/api/lint.md index 652a5289f13..addc8d0f9a3 100644 --- a/doc/api/lint.md +++ b/doc/api/lint.md @@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w # CI Lint API -## Validate the CI YAML config +## Validate the CI YAML configuration > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5953) in GitLab 8.12. @@ -26,7 +26,7 @@ POST /ci/lint curl --header "Content-Type: application/json" "https://gitlab.example.com/api/v4/ci/lint" --data '{"content": "{ \"image\": \"ruby:2.6\", \"services\": [\"postgres\"], \"before_script\": [\"bundle install\", \"bundle exec rake db:create\"], \"variables\": {\"DB_NAME\": \"postgres\"}, \"types\": [\"test\", \"deploy\", \"notify\"], \"rspec\": { \"script\": \"rake spec\", \"tags\": [\"ruby\", \"postgres\"], \"only\": [\"branches\"]}}"}' ``` -Be sure to paste the exact contents of your GitLab CI/CD YAML config because YAML +Be sure to paste the exact contents of your GitLab CI/CD YAML configuration because YAML is very sensitive about indentation and spacing. Example responses: @@ -61,7 +61,10 @@ Example responses: ### YAML expansion -The expansion only works for CI configurations that don't have local [includes](../ci/yaml/README.md#include). +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/29568) in GitLab 13.5. + +The CI lint returns an expanded version of the configuration. The expansion does not +work for CI configuration added with [`include: local`](../ci/yaml/README.md#includelocal). Example contents of a `.gitlab-ci.yml` passed to the CI Lint API with `include_merged_yaml` set as true: @@ -119,7 +122,7 @@ curl "https://gitlab.example.com/api/v4/projects/:id/ci/lint" Example responses: -- Valid config: +- Valid configuration: ```json { @@ -130,7 +133,7 @@ Example responses: } ``` -- Invalid config: +- Invalid configuration: ```json { diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 0656c76236d..920cf92fe88 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -2622,10 +2622,12 @@ The `stop_review_app` job is **required** to have the following keywords defined - `environment:action` Additionally, both jobs should have matching [`rules`](../yaml/README.md#onlyexcept-basic) -or [`only/except`](../yaml/README.md#onlyexcept-basic) configuration. In the example -above, if the configuration is not identical, the `stop_review_app` job might not be -included in all pipelines that include the `review_app` job, and it is not -possible to trigger the `action: stop` to stop the environment automatically. +or [`only/except`](../yaml/README.md#onlyexcept-basic) configuration. + +In the example above, if the configuration is not identical: + +- The `stop_review_app` job might not be included in all pipelines that include the `review_app` job. +- It is not possible to trigger the `action: stop` to stop the environment automatically. #### `environment:auto_stop_in` @@ -2774,17 +2776,17 @@ rspec: - binaries/ ``` -Note that since cache is shared between jobs, if you're using different -paths for different jobs, you should also set a different **cache:key** -otherwise cache content can be overwritten. +The cache is shared between jobs, so if you're using different +paths for different jobs, you should also set a different `cache:key`. +Otherwise cache content can be overwritten. #### `cache:key` > Introduced in GitLab Runner v1.0.0. -Since the cache is shared between jobs, if you're using different -paths for different jobs, you should also set a different `cache:key` -otherwise cache content can be overwritten. +The cache is shared between jobs, so if you're using different +paths for different jobs, you should also set a different `cache:key`. +Otherwise cache content can be overwritten. The `key` parameter defines the affinity of caching between jobs, to have a single cache for all jobs, cache per-job, cache per-branch @@ -2973,13 +2975,13 @@ rspec: - bundle exec rspec ... ``` -This helps to speed up job execution and reduce load on the cache server, -especially when you have a large number of cache-using jobs executing in +This helps to speed up job execution and reduce load on the cache server. +It is especially helpful when you have a large number of cache-using jobs executing in parallel. -Additionally, if you have a job that unconditionally recreates the cache without -reference to its previous contents, you can use `policy: push` in that job to -skip the download step. +If you have a job that unconditionally recreates the cache without +referring to its previous contents, you can skip the download step. +To do so, add `policy: push` to the job. ### `artifacts` @@ -2992,7 +2994,7 @@ skip the download step. `artifacts` is used to specify a list of files and directories that are attached to the job when it [succeeds, fails, or always](#artifactswhen). -The artifacts are sent to GitLab after the job finishes and are +The artifacts are sent to GitLab after the job finishes. They are available for download in the GitLab UI if the size is not larger than the [maximum artifact size](../../user/gitlab_com/index.md#gitlab-cicd). @@ -3341,19 +3343,22 @@ These are the available report types: > Introduced in GitLab 8.6 and GitLab Runner v1.1.1. -By default, all [`artifacts`](#artifacts) from all previous [stages](#stages) -are passed, but you can use the `dependencies` parameter to define a limited -list of jobs (or no jobs) to fetch artifacts from. +By default, all [`artifacts`](#artifacts) from previous [stages](#stages) +are passed to each job. However, you can use the `dependencies` parameter to +define a limited list of jobs to fetch artifacts from. You can also set a job to download no artifacts at all. To use this feature, define `dependencies` in context of the job and pass a list of all previous jobs the artifacts should be downloaded from. -You can only define jobs from stages that are executed before the current one. -An error is shown if you define jobs from the current stage or next ones. -Defining an empty array skips downloading any artifacts for that job. -The status of the previous job is not considered when using `dependencies`, so -if it failed or it's a manual job that was not run, no error occurs. -In the following example, we define two jobs with artifacts, `build:osx` and +You can define jobs from stages that were executed before the current one. +An error occurs if you define jobs from the current or an upcoming stage. + +To prevent a job from downloading artifacts, define an empty array. + +When you use `dependencies`, the status of the previous job is not considered. +If a job fails or it's a manual job that was not run, no error occurs. + +The following example defines two jobs with artifacts: `build:osx` and `build:linux`. When the `test:osx` is executed, the artifacts from `build:osx` are downloaded and extracted in the context of the build. The same happens for `test:linux` and artifacts from `build:linux`. @@ -3435,14 +3440,14 @@ job1: Use `retry` to configure how many times a job is retried in case of a failure. -When a job fails and has `retry` configured, the job is processed again, -up to the amount of times specified by the `retry` keyword. +When a job fails, the job is processed again, +until the limit specified by the `retry` keyword is reached. -If `retry` is set to 2, and a job succeeds in a second run (first retry), it is not tried -again. `retry` value has to be a positive integer, equal to or larger than 0, but -less than or equal to 2 (two retries maximum, three runs in total). +If `retry` is set to `2`, and a job succeeds in a second run (first retry), it is not retried. +The `retry` value must be a positive integer, from `0` to `2` +(two retries maximum, three runs in total). -A simple example to retry in all failure cases: +This example retries all failure cases: ```yaml test: @@ -3640,9 +3645,9 @@ You can use this keyword to create two different types of downstream pipelines: - [Multi-project pipelines](../multi_project_pipelines.md#creating-multi-project-pipelines-from-gitlab-ciyml) - [Child pipelines](../parent_child_pipelines.md) -[Since GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/197140/), you can -see which job triggered a downstream pipeline by hovering your mouse cursor over -the downstream pipeline job in the [pipeline graph](../pipelines/index.md#visualize-pipelines). +[In GitLab 13.2 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/197140/), you can +view which job triggered a downstream pipeline. In the [pipeline graph](../pipelines/index.md#visualize-pipelines), +hover over the downstream pipeline job. In [GitLab 13.5](https://gitlab.com/gitlab-org/gitlab/-/issues/201938) and later, you can use [`when:manual`](#whenmanual) in the same job as `trigger`. In GitLab 13.4 and @@ -3782,7 +3787,7 @@ trigger_job: This setting can help keep your pipeline execution linear. In the example above, jobs from subsequent stages wait for the triggered pipeline to successfully complete before -starting, at the cost of reduced parallelization. +starting, which reduces parallelization. #### Trigger a pipeline by API call @@ -3859,7 +3864,7 @@ to semaphores in other programming languages. When the `resource_group` key is defined for a job in `.gitlab-ci.yml`, job executions are mutually exclusive across different pipelines for the same project. If multiple jobs belonging to the same resource group are enqueued simultaneously, -only one of the jobs is picked by the runner, and the other jobs wait until the +only one of the jobs is picked by the runner. The other jobs wait until the `resource_group` is free. Here is a simple example: @@ -3870,9 +3875,7 @@ deploy-to-production: resource_group: production ``` -In this case, if a `deploy-to-production` job is running in a pipeline, and a new -`deploy-to-production` job is created in a different pipeline, it doesn't run until -the currently running/pending `deploy-to-production` job finishes. As a result, +In this case, two `deploy-to-production` jobs in two separate pipelines can never run at the same time. As a result, you can ensure that concurrent deployments never happen to the production environment. There can be multiple `resource_group`s defined per environment. A good use case for this diff --git a/doc/user/admin_area/img/admin_wrench.png b/doc/user/admin_area/img/admin_wrench.png deleted file mode 100644 index 17eee143e87..00000000000 Binary files a/doc/user/admin_area/img/admin_wrench.png and /dev/null differ diff --git a/doc/user/admin_area/license.md b/doc/user/admin_area/license.md index ecbc615f56a..c37a61d6748 100644 --- a/doc/user/admin_area/license.md +++ b/doc/user/admin_area/license.md @@ -8,130 +8,126 @@ type: howto # Activate GitLab EE with a license **(STARTER ONLY)** To activate all GitLab Enterprise Edition (EE) functionality, you need to upload -a license. Once you've received your license from GitLab Inc., you can upload it -by **signing into your GitLab instance as an admin** or add it at +a license. After you've received your license from GitLab Inc., you can upload it +by **signing into your GitLab instance as an admin** or adding it at installation time. -The license has the form of a base64 encoded ASCII text with a `.gitlab-license` -extension and can be obtained when you [purchase one](https://about.gitlab.com/pricing/) or when you sign -up for a [free trial](https://about.gitlab.com/free-trial/). +The license is a base64-encoded ASCII text file with a `.gitlab-license` +extension. You can obtain the file by [purchasing a license](https://about.gitlab.com/pricing/) +or by signing up for a [free trial](https://about.gitlab.com/free-trial/). -NOTE: **Note:** As of GitLab Enterprise Edition 9.4.0, a newly-installed instance without an -uploaded license will only have the Core features active. A trial license will -activate all Ultimate features, but after +uploaded license only has the Core features active. A trial license +activates all Ultimate features, but after [the trial expires](#what-happens-when-your-license-expires), some functionality -will be locked. +is locked. ## Uploading your license The very first time you visit your GitLab EE installation signed in as an admin, you should see a note urging you to upload a license with a link that takes you -straight to **Admin Area > License**. +to **Admin Area > License**. Otherwise, you can: -1. Navigate manually to the **Admin Area** by clicking the wrench icon in the menu bar. +1. Navigate manually to the **Admin Area** by clicking the wrench (**{admin}**) icon in the menu bar. - ![Admin Area icon](img/admin_wrench.png) - -1. And then going to the **License** tab and click on **Upload New License**. +1. Navigate to the **License** tab, and click **Upload New License**. ![License Admin Area](img/license_admin_area.png) -1. If you've received a `.gitlab-license` file, you should have already downloaded - it in your local machine. You can then upload it directly by choosing the - license file and clicking the **Upload license** button. In the image below, - you can see that the selected license file is named `GitLab.gitlab-license`. + - *If you've received a `.gitlab-license` file,* you should have already downloaded + it in your local machine. You can then upload it directly by choosing the + license file and clicking the **Upload license** button. In the image below, + the selected license file is named `GitLab.gitlab-license`. - ![Upload license](img/license_upload.png) + ![Upload license](img/license_upload.png) - If you've received your license as plain text, you need to select the - "Enter license key" option, copy the license, paste it into the "License key" - field and click **Upload license**. + - *If you've received your license as plain text,* select the + **Enter license key** option, copy the license, paste it into the **License key** + field, and click **Upload license**. ## Add your license at install time -A license can be automatically imported at install time, by placing a file named -`Gitlab.gitlab-license` in `/etc/gitlab/` for Omnibus, or `config/` for source installations. +A license can be automatically imported at install time by placing a file named +`Gitlab.gitlab-license` in `/etc/gitlab/` for Omnibus GitLab, or `config/` for source installations. -It is also possible to specify a custom location and filename for the license. +You can also specify a custom location and filename for the license: -Source installations should set the `GITLAB_LICENSE_FILE` environment -variable with the path to a valid GitLab Enterprise Edition license. +- Source installations should set the `GITLAB_LICENSE_FILE` environment + variable with the path to a valid GitLab Enterprise Edition license. -```shell -export GITLAB_LICENSE_FILE="/path/to/license/file" -``` + ```shell + export GITLAB_LICENSE_FILE="/path/to/license/file" + ``` -Omnibus installations should add this entry to `gitlab.rb`: +- Omnibus GitLab installations should add this entry to `gitlab.rb`: -```ruby -gitlab_rails['initial_license_file'] = "/path/to/license/file" -``` + ```ruby + gitlab_rails['initial_license_file'] = "/path/to/license/file" + ``` CAUTION: **Caution:** -These methods will only add a license at the time of installation. Use the -Admin Area in the web user interface to renew or upgrade licenses. +These methods only add a license at the time of installation. Use the +**{admin}** **Admin Area** in the web user interface to renew or upgrade licenses. --- -Once the license is uploaded, all GitLab Enterprise Edition functionality -will be active until the end of the license period. When that period ends, the +After the license is uploaded, all GitLab Enterprise Edition functionality +is active until the end of the license period. When that period ends, the instance will [fall back](#what-happens-when-your-license-expires) to Core-only functionality. -You can review the license details at any time in the License section of the -Admin Area. +You can review the license details at any time in the **License** section of the +**Admin Area**. ![License details](img/license_details.png) ## Notification before the license expires -One month before the license expires, a message informing when the expiration -is due to, will start appearing to GitLab admins. Make sure that you update your -license, otherwise you will miss all the paid features if it expires. +One month before the license expires, a message informing about the expiration +date is displayed to GitLab admins. Make sure that you update your +license, otherwise you miss all the paid features if your license expires. ## What happens when your license expires -In case your license expires, GitLab will lock down some features like Git pushes, -issue creation, etc., and a message to inform of the expired license will be -presented to all admins. +In case your license expires, GitLab locks down some features like Git pushes, +and issue creation, and displays a message to all admins to inform of the expired license. -In order to get back all the previous functionality, a new license must be uploaded. -To fall back to having only the Core features active, you'll need to delete the +To get back all the previous functionality, you must upload a new license. +To fall back to having only the Core features active, you must delete the expired license(s). ### Remove a license To remove a license from a self-managed instance: -1. Go to the [Admin Area](index.md) (click the wrench in the top navigation bar). +1. In the top navigation bar, click the **{admin}** wrench icon to navigate to the [Admin Area](index.md). 1. Click **License** in the left sidebar. 1. Click **Remove License**. ## License history -It's possible to upload and view more than one license, -but only the latest license will be used as the active license. +You can upload and view more than one license, +but only the latest license is used as the active license. ## Troubleshooting ### There is no License tab in the Admin Area -If you originally installed Community Edition rather than Enterprise Edition you will need to +If you originally installed Community Edition rather than Enterprise Edition you must [upgrade to Enterprise Edition](../../update/README.md#community-to-enterprise-edition) before uploading your license. -GitLab.com users cannot upload and use a self-managed license. If you -wish to use paid features on GitLab.com, a separate subscription may be -[purchased](../../subscriptions/gitlab_com/index.md). +GitLab.com users can't upload and use a self-managed license. If you +want to use paid features on GitLab.com, you can +[purchase a separate subscription](../../subscriptions/gitlab_com/index.md). ### Users exceed license limit upon renewal -If you've added new users to your GitLab instance prior to renewal you may need to -purchase additional seats to cover those users. If this is the case and a license -without enough users is uploaded a message is displayed prompting you to purchase +If you've added new users to your GitLab instance prior to renewal, you may need to +purchase additional seats to cover those users. If this is the case, and a license +without enough users is uploaded, GitLab displays a message prompting you to purchase additional users. More information on how to determine the required number of users and how to add additional seats can be found in the [licensing FAQ](https://about.gitlab.com/pricing/licensing-faq/). -- cgit v1.2.3