提交 6af29c94 编写于 作者: G GitLab Bot

Add latest changes from gitlab-org/gitlab@master

上级 8a04ac23
......@@ -2,9 +2,11 @@
module Resolvers
class EchoResolver < BaseResolver
argument :text, GraphQL::STRING_TYPE, required: true # rubocop:disable Graphql/Descriptions
description 'Testing endpoint to validate the API with'
argument :text, GraphQL::STRING_TYPE, required: true,
description: 'Text to echo back'
def resolve(**args)
username = context[:current_user]&.username
......
......@@ -4,17 +4,17 @@ module Resolvers
class IssuesResolver < BaseResolver
argument :iid, GraphQL::STRING_TYPE,
required: false,
description: 'The IID of the issue, e.g., "1"'
description: 'IID of the issue. For example, "1"'
argument :iids, [GraphQL::STRING_TYPE],
required: false,
description: 'The list of IIDs of issues, e.g., [1, 2]'
description: 'List of IIDs of issues. For example, [1, 2]'
argument :state, Types::IssuableStateEnum,
required: false,
description: 'Current state of Issue'
description: 'Current state of this issue'
argument :label_name, GraphQL::STRING_TYPE.to_list_type,
required: false,
description: 'Labels applied to the Issue'
description: 'Labels applied to this issue'
argument :created_before, Types::TimeType,
required: false,
description: 'Issues created before this date'
......@@ -33,8 +33,9 @@ module Resolvers
argument :closed_after, Types::TimeType,
required: false,
description: 'Issues closed after this date'
argument :search, GraphQL::STRING_TYPE, # rubocop:disable Graphql/Descriptions
required: false
argument :search, GraphQL::STRING_TYPE,
required: false,
description: 'Search query for finding issues by title or description'
argument :sort, Types::IssueSortEnum,
description: 'Sort issues by this criteria',
required: false,
......
......@@ -6,9 +6,12 @@ module Types
class DiffRefsType < BaseObject
graphql_name 'DiffRefs'
field :head_sha, GraphQL::STRING_TYPE, null: false, description: 'The sha of the head at the time the comment was made'
field :base_sha, GraphQL::STRING_TYPE, null: false, description: 'The merge base of the branch the comment was made on'
field :start_sha, GraphQL::STRING_TYPE, null: false, description: 'The sha of the branch being compared against'
field :head_sha, GraphQL::STRING_TYPE, null: false,
description: 'SHA of the HEAD at the time the comment was made'
field :base_sha, GraphQL::STRING_TYPE, null: false,
description: 'Merge base of the branch the comment was made on'
field :start_sha, GraphQL::STRING_TYPE, null: false,
description: 'SHA of the branch being compared against'
end
# rubocop: enable Graphql/AuthorizeTypes
end
......@@ -7,36 +7,38 @@ module Types
class DiffPositionType < BaseObject
graphql_name 'DiffPosition'
field :diff_refs, Types::DiffRefsType, null: false # rubocop:disable Graphql/Descriptions
field :diff_refs, Types::DiffRefsType, null: false,
description: 'Information about the branch, HEAD, and base at the time of commenting'
field :file_path, GraphQL::STRING_TYPE, null: false,
description: "The path of the file that was changed"
description: 'Path of the file that was changed'
field :old_path, GraphQL::STRING_TYPE, null: true,
description: "The path of the file on the start sha."
description: 'Path of the file on the start SHA'
field :new_path, GraphQL::STRING_TYPE, null: true,
description: "The path of the file on the head sha."
field :position_type, Types::Notes::PositionTypeEnum, null: false # rubocop:disable Graphql/Descriptions
description: 'Path of the file on the HEAD SHA'
field :position_type, Types::Notes::PositionTypeEnum, null: false,
description: 'Type of file the position refers to'
# Fields for text positions
field :old_line, GraphQL::INT_TYPE, null: true,
description: "The line on start sha that was changed",
description: 'Line on start SHA that was changed',
resolve: -> (position, _args, _ctx) { position.old_line if position.on_text? }
field :new_line, GraphQL::INT_TYPE, null: true,
description: "The line on head sha that was changed",
description: 'Line on HEAD SHA that was changed',
resolve: -> (position, _args, _ctx) { position.new_line if position.on_text? }
# Fields for image positions
field :x, GraphQL::INT_TYPE, null: true,
description: "The X postion on which the comment was made",
description: 'X position on which the comment was made',
resolve: -> (position, _args, _ctx) { position.x if position.on_image? }
field :y, GraphQL::INT_TYPE, null: true,
description: "The Y position on which the comment was made",
description: 'Y position on which the comment was made',
resolve: -> (position, _args, _ctx) { position.y if position.on_image? }
field :width, GraphQL::INT_TYPE, null: true,
description: "The total width of the image",
description: 'Total width of the image',
resolve: -> (position, _args, _ctx) { position.width if position.on_image? }
field :height, GraphQL::INT_TYPE, null: true,
description: "The total height of the image",
description: 'Total height of the image',
resolve: -> (position, _args, _ctx) { position.height if position.on_image? }
end
# rubocop: enable Graphql/AuthorizeTypes
......
......@@ -7,10 +7,14 @@ module Types
authorize :read_note
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :reply_id, GraphQL::ID_TYPE, null: false, description: 'The ID used to reply to this discussion'
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :notes, Types::Notes::NoteType.connection_type, null: false, description: "All notes in the discussion"
field :id, GraphQL::ID_TYPE, null: false,
description: "ID of this discussion"
field :reply_id, GraphQL::ID_TYPE, null: false,
description: 'ID used to reply to this discussion'
field :created_at, Types::TimeType, null: false,
description: "Timestamp of the discussion's creation"
field :notes, Types::Notes::NoteType.connection_type, null: false,
description: 'All notes in the discussion'
# The gem we use to generate Global IDs is hard-coded to work with
# `id` properties. To generate a GID for the `reply_id` property,
......
......@@ -9,40 +9,48 @@ module Types
expose_permissions Types::PermissionTypes::Note
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :id, GraphQL::ID_TYPE, null: false,
description: 'ID of the note'
field :project, Types::ProjectType,
null: true,
description: "The project this note is associated to",
description: 'Project associated with the note',
resolve: -> (note, args, context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Project, note.project_id).find }
field :author, Types::UserType,
null: false,
description: "The user who wrote this note",
description: 'User who wrote this note',
resolve: -> (note, args, context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, note.author_id).find }
field :resolved_by, Types::UserType,
null: true,
description: "The user that resolved the discussion",
description: 'User that resolved the discussion',
resolve: -> (note, _args, _context) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, note.resolved_by_id).find }
field :system, GraphQL::BOOLEAN_TYPE,
null: false,
description: "Whether or not this note was created by the system or by a user"
description: 'Indicates whether this note was created by the system or by a user'
field :body, GraphQL::STRING_TYPE,
null: false,
method: :note,
description: "The content note itself"
description: 'Content of the note'
markdown_field :body_html, null: true, method: :note
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
field :discussion, Types::Notes::DiscussionType, null: true, description: "The discussion this note is a part of"
field :resolvable, GraphQL::BOOLEAN_TYPE, null: false, method: :resolvable? # rubocop:disable Graphql/Descriptions
field :resolved_at, Types::TimeType, null: true, description: "The time the discussion was resolved"
field :position, Types::Notes::DiffPositionType, null: true, description: "The position of this note on a diff"
field :created_at, Types::TimeType, null: false,
description: 'Timestamp of the note creation'
field :updated_at, Types::TimeType, null: false,
description: "Timestamp of the note's last activity"
field :discussion, Types::Notes::DiscussionType, null: true,
description: 'The discussion this note is a part of'
field :resolvable, GraphQL::BOOLEAN_TYPE, null: false,
description: 'Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note',
method: :resolvable?
field :resolved_at, Types::TimeType, null: true,
description: "Timestamp of the note's resolution"
field :position, Types::Notes::DiffPositionType, null: true,
description: 'The position of this note on a diff'
end
end
end
......@@ -35,6 +35,8 @@ module Types
resolver: Resolvers::SnippetsResolver,
description: 'Find Snippets visible to the current user'
field :echo, GraphQL::STRING_TYPE, null: false, resolver: Resolvers::EchoResolver # rubocop:disable Graphql/Descriptions
field :echo, GraphQL::STRING_TYPE, null: false,
description: 'Text to echo back',
resolver: Resolvers::EchoResolver
end
end
......@@ -237,7 +237,7 @@ Autogenerated input type of CreateDiffNote
"""
input CreateDiffNoteInput {
"""
The content note itself
Content of the note
"""
body: String!
......@@ -357,7 +357,7 @@ Autogenerated input type of CreateImageDiffNote
"""
input CreateImageDiffNoteInput {
"""
The content note itself
Content of the note
"""
body: String!
......@@ -402,7 +402,7 @@ Autogenerated input type of CreateNote
"""
input CreateNoteInput {
"""
The content note itself
Content of the note
"""
body: String!
......@@ -969,17 +969,17 @@ type DetailedStatus {
input DiffImagePositionInput {
"""
The merge base of the branch the comment was made on
Merge base of the branch the comment was made on
"""
baseSha: String
"""
The sha of the head at the time the comment was made
SHA of the HEAD at the time the comment was made
"""
headSha: String!
"""
The total height of the image
Total height of the image
"""
height: Int!
......@@ -990,22 +990,22 @@ input DiffImagePositionInput {
paths: DiffPathsInput!
"""
The sha of the branch being compared against
SHA of the branch being compared against
"""
startSha: String!
"""
The total width of the image
Total width of the image
"""
width: Int!
"""
The X postion on which the comment was made
X position on which the comment was made
"""
x: Int!
"""
The Y position on which the comment was made
Y position on which the comment was made
"""
y: Int!
}
......@@ -1023,73 +1023,80 @@ input DiffPathsInput {
}
type DiffPosition {
"""
Information about the branch, HEAD, and base at the time of commenting
"""
diffRefs: DiffRefs!
"""
The path of the file that was changed
Path of the file that was changed
"""
filePath: String!
"""
The total height of the image
Total height of the image
"""
height: Int
"""
The line on head sha that was changed
Line on HEAD SHA that was changed
"""
newLine: Int
"""
The path of the file on the head sha.
Path of the file on the HEAD SHA
"""
newPath: String
"""
The line on start sha that was changed
Line on start SHA that was changed
"""
oldLine: Int
"""
The path of the file on the start sha.
Path of the file on the start SHA
"""
oldPath: String
"""
Type of file the position refers to
"""
positionType: DiffPositionType!
"""
The total width of the image
Total width of the image
"""
width: Int
"""
The X postion on which the comment was made
X position on which the comment was made
"""
x: Int
"""
The Y position on which the comment was made
Y position on which the comment was made
"""
y: Int
}
input DiffPositionInput {
"""
The merge base of the branch the comment was made on
Merge base of the branch the comment was made on
"""
baseSha: String
"""
The sha of the head at the time the comment was made
SHA of the HEAD at the time the comment was made
"""
headSha: String!
"""
The line on head sha that was changed
Line on HEAD SHA that was changed
"""
newLine: Int!
"""
The line on start sha that was changed
Line on start SHA that was changed
"""
oldLine: Int
......@@ -1100,7 +1107,7 @@ input DiffPositionInput {
paths: DiffPathsInput!
"""
The sha of the branch being compared against
SHA of the branch being compared against
"""
startSha: String!
}
......@@ -1115,23 +1122,30 @@ enum DiffPositionType {
type DiffRefs {
"""
The merge base of the branch the comment was made on
Merge base of the branch the comment was made on
"""
baseSha: String!
"""
The sha of the head at the time the comment was made
SHA of the HEAD at the time the comment was made
"""
headSha: String!
"""
The sha of the branch being compared against
SHA of the branch being compared against
"""
startSha: String!
}
type Discussion {
"""
Timestamp of the discussion's creation
"""
createdAt: Time!
"""
ID of this discussion
"""
id: ID!
"""
......@@ -1160,7 +1174,7 @@ type Discussion {
): NoteConnection!
"""
The ID used to reply to this discussion
ID used to reply to this discussion
"""
replyId: ID!
}
......@@ -1259,12 +1273,12 @@ type Epic implements Noteable {
first: Int
"""
The IID of the epic, e.g., "1"
IID of the epic, e.g., "1"
"""
iid: ID
"""
The list of IIDs of epics, e.g., [1, 2]
List of IIDs of epics, e.g., [1, 2]
"""
iids: [ID!]
......@@ -1672,7 +1686,15 @@ type EpicIssue implements Noteable {
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
"""
Collection of design images associated with this issue
"""
designCollection: DesignCollection
"""
Deprecated. Use `design_collection`.
"""
designs: DesignCollection @deprecated(reason: "use design_collection")
"""
......@@ -1716,13 +1738,17 @@ type EpicIssue implements Noteable {
dueDate: Time
"""
The epic to which issue belongs
Epic to which this issue belongs
"""
epic: Epic
"""
ID of the epic-issue relation
"""
epicIssueId: ID!
"""
The global id of the epic-issue relation
Global ID of the epic-issue relation
"""
id: ID
......@@ -1820,6 +1846,10 @@ type EpicIssue implements Noteable {
"""
full: Boolean = false
): String!
"""
URI path of the epic-issue relation
"""
relationPath: String
"""
......@@ -1891,6 +1921,10 @@ type EpicIssue implements Noteable {
Web URL of the issue
"""
webUrl: String!
"""
Weight of the issue
"""
weight: Int
}
......@@ -2135,6 +2169,10 @@ type Group {
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
"""
Find a single epic
"""
epic(
"""
Filter epics by author
......@@ -2148,12 +2186,12 @@ type Group {
endDate: Time
"""
The IID of the epic, e.g., "1"
IID of the epic, e.g., "1"
"""
iid: ID
"""
The list of IIDs of epics, e.g., [1, 2]
List of IIDs of epics, e.g., [1, 2]
"""
iids: [ID!]
......@@ -2183,6 +2221,10 @@ type Group {
"""
state: EpicState
): Epic
"""
Find epics
"""
epics(
"""
Returns the elements in the list that come after the specified cursor.
......@@ -2211,12 +2253,12 @@ type Group {
first: Int
"""
The IID of the epic, e.g., "1"
IID of the epic, e.g., "1"
"""
iid: ID
"""
The list of IIDs of epics, e.g., [1, 2]
List of IIDs of epics, e.g., [1, 2]
"""
iids: [ID!]
......@@ -2459,7 +2501,15 @@ type Issue implements Noteable {
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
"""
Collection of design images associated with this issue
"""
designCollection: DesignCollection
"""
Deprecated. Use `design_collection`.
"""
designs: DesignCollection @deprecated(reason: "use design_collection")
"""
......@@ -2503,7 +2553,7 @@ type Issue implements Noteable {
dueDate: Time
"""
The epic to which issue belongs
Epic to which this issue belongs
"""
epic: Epic
......@@ -2671,6 +2721,10 @@ type Issue implements Noteable {
Web URL of the issue
"""
webUrl: String!
"""
Weight of the issue
"""
weight: Int
}
......@@ -3966,12 +4020,12 @@ type Namespace {
type Note {
"""
The user who wrote this note
User who wrote this note
"""
author: User!
"""
The content note itself
Content of the note
"""
body: String!
......@@ -3979,12 +4033,20 @@ type Note {
The GitLab Flavored Markdown rendering of `note`
"""
bodyHtml: String
"""
Timestamp of the note creation
"""
createdAt: Time!
"""
The discussion this note is a part of
"""
discussion: Discussion
"""
ID of the note
"""
id: ID!
"""
......@@ -3993,25 +4055,33 @@ type Note {
position: DiffPosition
"""
The project this note is associated to
Project associated with the note
"""
project: Project
"""
Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note
"""
resolvable: Boolean!
"""
The time the discussion was resolved
Timestamp of the note's resolution
"""
resolvedAt: Time
"""
The user that resolved the discussion
User that resolved the discussion
"""
resolvedBy: User
"""
Whether or not this note was created by the system or by a user
Indicates whether this note was created by the system or by a user
"""
system: Boolean!
"""
Timestamp of the note's last activity
"""
updatedAt: Time!
"""
......@@ -4339,19 +4409,23 @@ type Project {
createdBefore: Time
"""
The IID of the issue, e.g., "1"
IID of the issue. For example, "1"
"""
iid: String
"""
The list of IIDs of issues, e.g., [1, 2]
List of IIDs of issues. For example, [1, 2]
"""
iids: [String!]
"""
Labels applied to the Issue
Labels applied to this issue
"""
labelName: [String]
"""
Search query for finding issues by title or description
"""
search: String
"""
......@@ -4360,7 +4434,7 @@ type Project {
sort: IssueSort = created_desc
"""
Current state of Issue
Current state of this issue
"""
state: IssuableState
......@@ -4415,17 +4489,17 @@ type Project {
first: Int
"""
The IID of the issue, e.g., "1"
IID of the issue. For example, "1"
"""
iid: String
"""
The list of IIDs of issues, e.g., [1, 2]
List of IIDs of issues. For example, [1, 2]
"""
iids: [String!]
"""
Labels applied to the Issue
Labels applied to this issue
"""
labelName: [String]
......@@ -4433,6 +4507,10 @@ type Project {
Returns the last _n_ elements from the list.
"""
last: Int
"""
Search query for finding issues by title or description
"""
search: String
"""
......@@ -4441,7 +4519,7 @@ type Project {
sort: IssueSort = created_desc
"""
Current state of Issue
Current state of this issue
"""
state: IssuableState
......@@ -5031,9 +5109,14 @@ type Query {
currentUser: User
"""
Testing endpoint to validate the API with
Text to echo back
"""
echo(text: String!): String!
echo(
"""
Text to echo back
"""
text: String!
): String!
"""
Find a group
......@@ -6183,7 +6266,7 @@ Autogenerated input type of UpdateNote
"""
input UpdateNoteInput {
"""
The content note itself
Content of the note
"""
body: String!
......
......@@ -178,33 +178,33 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `diffRefs` | DiffRefs! | |
| `filePath` | String! | The path of the file that was changed |
| `oldPath` | String | The path of the file on the start sha. |
| `newPath` | String | The path of the file on the head sha. |
| `positionType` | DiffPositionType! | |
| `oldLine` | Int | The line on start sha that was changed |
| `newLine` | Int | The line on head sha that was changed |
| `x` | Int | The X postion on which the comment was made |
| `y` | Int | The Y position on which the comment was made |
| `width` | Int | The total width of the image |
| `height` | Int | The total height of the image |
| `diffRefs` | DiffRefs! | Information about the branch, HEAD, and base at the time of commenting |
| `filePath` | String! | Path of the file that was changed |
| `oldPath` | String | Path of the file on the start SHA |
| `newPath` | String | Path of the file on the HEAD SHA |
| `positionType` | DiffPositionType! | Type of file the position refers to |
| `oldLine` | Int | Line on start SHA that was changed |
| `newLine` | Int | Line on HEAD SHA that was changed |
| `x` | Int | X position on which the comment was made |
| `y` | Int | Y position on which the comment was made |
| `width` | Int | Total width of the image |
| `height` | Int | Total height of the image |
### DiffRefs
| Name | Type | Description |
| --- | ---- | ---------- |
| `headSha` | String! | The sha of the head at the time the comment was made |
| `baseSha` | String! | The merge base of the branch the comment was made on |
| `startSha` | String! | The sha of the branch being compared against |
| `headSha` | String! | SHA of the HEAD at the time the comment was made |
| `baseSha` | String! | Merge base of the branch the comment was made on |
| `startSha` | String! | SHA of the branch being compared against |
### Discussion
| Name | Type | Description |
| --- | ---- | ---------- |
| `id` | ID! | |
| `replyId` | ID! | The ID used to reply to this discussion |
| `createdAt` | Time! | |
| `id` | ID! | ID of this discussion |
| `replyId` | ID! | ID used to reply to this discussion |
| `createdAt` | Time! | Timestamp of the discussion's creation |
### Epic
......@@ -281,13 +281,13 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | The epic to which issue belongs |
| `weight` | Int | |
| `designs` | DesignCollection | |
| `designCollection` | DesignCollection | |
| `epicIssueId` | ID! | |
| `relationPath` | String | |
| `id` | ID | The global id of the epic-issue relation |
| `epic` | Epic | Epic to which this issue belongs |
| `weight` | Int | Weight of the issue |
| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
| `designCollection` | DesignCollection | Collection of design images associated with this issue |
| `epicIssueId` | ID! | ID of the epic-issue relation |
| `relationPath` | String | URI path of the epic-issue relation |
| `id` | ID | Global ID of the epic-issue relation |
### EpicPermissions
......@@ -338,7 +338,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `parent` | Group | Parent group |
| `epicsEnabled` | Boolean | Indicates if Epics are enabled for namespace |
| `groupTimelogsEnabled` | Boolean | Indicates if Group timelogs are enabled for namespace |
| `epic` | Epic | |
| `epic` | Epic | Find a single epic |
### GroupPermissions
......@@ -376,10 +376,10 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `createdAt` | Time! | Timestamp of when the issue was created |
| `updatedAt` | Time! | Timestamp of when the issue was last updated |
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | The epic to which issue belongs |
| `weight` | Int | |
| `designs` | DesignCollection | |
| `designCollection` | DesignCollection | |
| `epic` | Epic | Epic to which this issue belongs |
| `weight` | Int | Weight of the issue |
| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
| `designCollection` | DesignCollection | Collection of design images associated with this issue |
### IssuePermissions
......@@ -577,18 +577,18 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | NotePermissions! | Permissions for the current user on the resource |
| `id` | ID! | |
| `project` | Project | The project this note is associated to |
| `author` | User! | The user who wrote this note |
| `resolvedBy` | User | The user that resolved the discussion |
| `system` | Boolean! | Whether or not this note was created by the system or by a user |
| `body` | String! | The content note itself |
| `id` | ID! | ID of the note |
| `project` | Project | Project associated with the note |
| `author` | User! | User who wrote this note |
| `resolvedBy` | User | User that resolved the discussion |
| `system` | Boolean! | Indicates whether this note was created by the system or by a user |
| `body` | String! | Content of the note |
| `bodyHtml` | String | The GitLab Flavored Markdown rendering of `note` |
| `createdAt` | Time! | |
| `updatedAt` | Time! | |
| `createdAt` | Time! | Timestamp of the note creation |
| `updatedAt` | Time! | Timestamp of the note's last activity |
| `discussion` | Discussion | The discussion this note is a part of |
| `resolvable` | Boolean! | |
| `resolvedAt` | Time | The time the discussion was resolved |
| `resolvable` | Boolean! | Indicates if this note can be resolved. That is, if it is a resolvable discussion or simply a standalone note |
| `resolvedAt` | Time | Timestamp of the note's resolution |
| `position` | DiffPosition | The position of this note on a diff |
### NotePermissions
......
......@@ -1009,6 +1009,7 @@ POST /projects
| `template_project_id` | integer | no | **(PREMIUM)** When used with `use_custom_template`, project ID of a custom project template. This is preferable to using `template_name` since `template_name` may be ambiguous. |
| `use_custom_template` | boolean | no | **(PREMIUM)** Use either custom [instance](../user/admin_area/custom_project_templates.md) or [group](../user/group/custom_project_templates.md) (with `group_with_project_templates_id`) project template |
| `group_with_project_templates_id` | integer | no | **(PREMIUM)** For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires `use_custom_template` to be true |
| `packages_enabled` | boolean | no | **(PREMIUM ONLY)** Enable or disable packages repository feature |
NOTE: **Note:** If your HTTP repository is not publicly accessible,
add authentication information to the URL: `https://username:password@gitlab.company.com/group/project.git`
......@@ -1071,6 +1072,7 @@ POST /projects/user/:user_id
| `template_name` | string | no | When used without `use_custom_template`, name of a [built-in project template](../gitlab-basics/create-project.md#built-in-templates). When used with `use_custom_template`, name of a custom project template |
| `use_custom_template` | boolean | no | **(PREMIUM)** Use either custom [instance](../user/admin_area/custom_project_templates.md) or [group](../user/group/custom_project_templates.md) (with `group_with_project_templates_id`) project template |
| `group_with_project_templates_id` | integer | no | **(PREMIUM)** For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires `use_custom_template` to be true |
| `packages_enabled` | boolean | no | **(PREMIUM ONLY)** Enable or disable packages repository feature |
NOTE: **Note:** If your HTTP repository is not publicly accessible,
add authentication information to the URL: `https://username:password@gitlab.company.com/group/project.git`
......
......@@ -2478,12 +2478,13 @@ sequentially from `job_name 1/N` to `job_name N/N`.
For every job, `CI_NODE_INDEX` and `CI_NODE_TOTAL` [environment variables](../variables/README.md#predefined-environment-variables) are set.
Marking a job to be run in parallel requires only a simple addition to your configuration file:
Marking a job to be run in parallel requires adding `parallel` to your configuration
file. For example:
```diff
test:
script: rspec
+ parallel: 5
```yaml
test:
script: rspec
parallel: 5
```
TIP: **Tip:**
......@@ -2531,7 +2532,7 @@ triggers being used.
#### Simple `trigger` syntax
The most simple way to configure a downstream trigger to use `trigger` keyword
The simplest way to configure a downstream trigger is to use `trigger` keyword
with a full path to a downstream project:
```yaml
......@@ -2563,7 +2564,7 @@ staging:
It is possible to mirror the status from a triggered pipeline:
```
```yaml
trigger_job:
trigger:
project: my/project
......@@ -2572,7 +2573,7 @@ trigger_job:
It is possible to mirror the status from an upstream pipeline:
```
```yaml
upstream_bridge:
stage: test
needs:
......@@ -3286,7 +3287,7 @@ There are three possible values: `none`, `normal`, and `recursive`:
- `normal` means that only the top-level submodules will be included. It is
equivalent to:
```
```shell
git submodule sync
git submodule update --init
```
......@@ -3296,7 +3297,7 @@ There are three possible values: `none`, `normal`, and `recursive`:
GitLab Runner with an executor not based on Docker, make sure the Git version
meets that requirement. It is equivalent to:
```
```shell
git submodule sync --recursive
git submodule update --init --recursive
```
......@@ -3557,7 +3558,7 @@ Read more about the various [YAML features](https://learnxinyminutes.com/docs/ya
If you want to temporarily 'disable' a job, rather than commenting out all the
lines where the job is defined:
```
```yaml
#hidden_job:
# script:
# - run test
......
......@@ -38,7 +38,7 @@ The following are guides to basic GitLab functionality:
If you're familiar with Git on the command line, you can interact with your GitLab
projects just as you would with any other Git repository.
These resources will help get further acclimated to working on the command line.
These resources will help you get further acclimated to working on the command line.
- [Start using Git on the command line](start-using-git.md), for some simple Git commands.
- [Command line basics](command-line-commands.md), to create and edit files using the command line.
......
......@@ -153,6 +153,27 @@ A few notes:
cycles, calculate their median time and the result is what the dashboard of
Cycle Analytics is showing.
## Days to completion chart
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/21631) in GitLab 12.6.
This chart visually depicts the total number of days it takes for cycles to be completed.
This chart uses the global page filters for displaying data based on the selected
group, projects, and timeframe. In addition, specific stages can be selected
from within the chart itself.
### Enabling chart
By default, this chart is disabled for self-managed instances. To enable it, ask an
administrator with Rails console access to run the following:
```ruby
Feature.enable(:cycle_analytics_scatterplot_enabled)
```
This chart is enabled by default on GitLab.com.
## Permissions
The current permissions on the Project Cycle Analytics dashboard are:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册