summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-19 06:08:05 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-19 06:08:05 +0000
commit6287caa6fad6e2b69c23bdba3bcca6bdfd82c8ff (patch)
treef77e379b1332f6ee26d28b871a273646f42cd08f
parent1926d423f0792f32c642a97e02337aaf685ffd3a (diff)
downloadgitlab-ce-6287caa6fad6e2b69c23bdba3bcca6bdfd82c8ff.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/graphql/types/ci/detailed_status_type.rb26
-rw-r--r--app/graphql/types/ci/pipeline_type.rb43
-rw-r--r--doc/administration/housekeeping.md9
-rw-r--r--doc/administration/monitoring/performance/gitlab_configuration.md4
-rw-r--r--doc/administration/repository_checks.md7
-rw-r--r--doc/api/graphql/reference/gitlab_schema.graphql78
-rw-r--r--doc/api/graphql/reference/gitlab_schema.json42
-rw-r--r--doc/api/graphql/reference/index.md42
-rw-r--r--doc/development/README.md2
-rw-r--r--doc/development/issue_types.md45
10 files changed, 216 insertions, 82 deletions
diff --git a/app/graphql/types/ci/detailed_status_type.rb b/app/graphql/types/ci/detailed_status_type.rb
index d2847641d91..90b5283fc9a 100644
--- a/app/graphql/types/ci/detailed_status_type.rb
+++ b/app/graphql/types/ci/detailed_status_type.rb
@@ -6,14 +6,24 @@ module Types
class DetailedStatusType < BaseObject
graphql_name 'DetailedStatus'
- field :group, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :icon, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :favicon, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :details_path, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :has_details, GraphQL::BOOLEAN_TYPE, null: false, method: :has_details? # rubocop:disable Graphql/Descriptions
- field :label, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :text, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :tooltip, GraphQL::STRING_TYPE, null: false, method: :status_tooltip # rubocop:disable Graphql/Descriptions
+ field :group, GraphQL::STRING_TYPE, null: false,
+ description: 'Group of the pipeline status'
+ field :icon, GraphQL::STRING_TYPE, null: false,
+ description: 'Icon of the pipeline status'
+ field :favicon, GraphQL::STRING_TYPE, null: false,
+ description: 'Favicon of the pipeline status'
+ field :details_path, GraphQL::STRING_TYPE, null: false,
+ description: 'Path of the details for the pipeline status'
+ field :has_details, GraphQL::BOOLEAN_TYPE, null: false,
+ description: 'Indicates if the pipeline status has further details',
+ method: :has_details?
+ field :label, GraphQL::STRING_TYPE, null: false,
+ description: 'Label of the pipeline status'
+ field :text, GraphQL::STRING_TYPE, null: false,
+ description: 'Text of the pipeline status'
+ field :tooltip, GraphQL::STRING_TYPE, null: false,
+ description: 'Tooltip associated with the pipeline status',
+ method: :status_tooltip
end
# rubocop: enable Graphql/AuthorizeTypes
end
diff --git a/app/graphql/types/ci/pipeline_type.rb b/app/graphql/types/ci/pipeline_type.rb
index dfcfd6211bc..e786add6359 100644
--- a/app/graphql/types/ci/pipeline_type.rb
+++ b/app/graphql/types/ci/pipeline_type.rb
@@ -9,29 +9,34 @@ module Types
expose_permissions Types::PermissionTypes::Ci::Pipeline
- field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :iid, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
+ field :id, GraphQL::ID_TYPE, null: false,
+ description: 'ID of the pipeline'
+ field :iid, GraphQL::STRING_TYPE, null: false,
+ description: 'Internal ID of the pipeline'
- field :sha, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
- field :before_sha, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
- field :status, PipelineStatusEnum, null: false # rubocop:disable Graphql/Descriptions
- field :detailed_status, # rubocop:disable Graphql/Descriptions
- Types::Ci::DetailedStatusType,
- null: false,
+ field :sha, GraphQL::STRING_TYPE, null: false,
+ description: "SHA of the pipeline's commit"
+ field :before_sha, GraphQL::STRING_TYPE, null: true,
+ description: "Base SHA of the source branch"
+ field :status, PipelineStatusEnum, null: false,
+ description: "Status of the pipeline (#{::Ci::Pipeline.all_state_names.compact.join(', ').upcase})"
+ field :detailed_status, Types::Ci::DetailedStatusType, null: false,
+ description: 'Detailed status of the pipeline',
resolve: -> (obj, _args, ctx) { obj.detailed_status(ctx[:current_user]) }
- field :duration,
- GraphQL::INT_TYPE,
- null: true,
+ field :duration, GraphQL::INT_TYPE, null: true,
description: "Duration of the pipeline in seconds"
- field :coverage,
- GraphQL::FLOAT_TYPE,
- null: true,
+ field :coverage, GraphQL::FLOAT_TYPE, null: true,
description: "Coverage percentage"
- field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
- field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
- field :started_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
- field :finished_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
- field :committed_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
+ field :created_at, Types::TimeType, null: false,
+ description: "Timestamp of the pipeline's creation"
+ field :updated_at, Types::TimeType, null: false,
+ description: "Timestamp of the pipeline's last activity"
+ field :started_at, Types::TimeType, null: true,
+ description: 'Timestamp when the pipeline was started'
+ field :finished_at, Types::TimeType, null: true,
+ description: "Timestamp of the pipeline's completion"
+ field :committed_at, Types::TimeType, null: true,
+ description: "Timestamp of the pipeline's commit"
# TODO: Add triggering user as a type
end
diff --git a/doc/administration/housekeeping.md b/doc/administration/housekeeping.md
index 9083619841e..c2c31d2d813 100644
--- a/doc/administration/housekeeping.md
+++ b/doc/administration/housekeeping.md
@@ -5,14 +5,13 @@
## Automatic housekeeping
GitLab automatically runs `git gc` and `git repack` on repositories
-after Git pushes. If needed you can change how often this happens, or
-to turn it off, go to **Admin area > Settings**
-(`/admin/application_settings`).
+after Git pushes. You can change how often this happens or turn it off in
+**Admin area > Settings > Repository** (`/admin/application_settings/repository`).
## Manual housekeeping
-The housekeeping function will run a `repack` or `gc` depending on the
-"Automatic Git repository housekeeping" settings configured in **Admin area > Settings**
+The housekeeping function runs `repack` or `gc` depending on the
+**Housekeeping** settings configured in **Admin area > Settings > Repository**.
For example in the following scenario a `git repack -d` will be executed:
diff --git a/doc/administration/monitoring/performance/gitlab_configuration.md b/doc/administration/monitoring/performance/gitlab_configuration.md
index 8245c25ad25..528e032417a 100644
--- a/doc/administration/monitoring/performance/gitlab_configuration.md
+++ b/doc/administration/monitoring/performance/gitlab_configuration.md
@@ -5,8 +5,8 @@ InfluxDB support is scheduled to be removed in GitLab 13.0.
You are advised to use [Prometheus](../prometheus/index.md) instead.
GitLab Performance Monitoring is disabled by default. To enable it and change any of its
-settings, navigate to the Admin area in **Settings > Metrics**
-(`/admin/application_settings`).
+settings, navigate to **Admin Area > Settings > Metrics and profiling**
+(`/admin/application_settings/metrics_and_profiling`).
The minimum required settings you need to set are the InfluxDB host and port.
Make sure _Enable InfluxDB Metrics_ is checked and hit **Save** to save the
diff --git a/doc/administration/repository_checks.md b/doc/administration/repository_checks.md
index 6bf10441369..62dd12af87f 100644
--- a/doc/administration/repository_checks.md
+++ b/doc/administration/repository_checks.md
@@ -36,10 +36,9 @@ in `repocheck.log`:
- `/var/log/gitlab/gitlab-rails` for Omnibus installations
- `/home/git/gitlab/log` for installations from source
-If for some reason the periodic repository check caused a lot of false
-alarms you can choose to clear *all* repository check states by
-clicking "Clear all repository checks" on the **Settings** page of the
-admin panel (`/admin/application_settings`).
+If the periodic repository check causes false alarms, you can clear all repository check states by
+navigating to **Admin area > Settings > Repository**
+(`/admin/application_settings/repository`) and clicking **Clear all repository checks**.
---
[ce-3232]: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/3232 "Auto git fsck"
diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql
index 4673356cf9d..bc3395920ab 100644
--- a/doc/api/graphql/reference/gitlab_schema.graphql
+++ b/doc/api/graphql/reference/gitlab_schema.graphql
@@ -957,13 +957,44 @@ type DestroySnippetPayload {
}
type DetailedStatus {
+ """
+ Path of the details for the pipeline status
+ """
detailsPath: String!
+
+ """
+ Favicon of the pipeline status
+ """
favicon: String!
+
+ """
+ Group of the pipeline status
+ """
group: String!
+
+ """
+ Indicates if the pipeline status has further details
+ """
hasDetails: Boolean!
+
+ """
+ Icon of the pipeline status
+ """
icon: String!
+
+ """
+ Label of the pipeline status
+ """
label: String!
+
+ """
+ Text of the pipeline status
+ """
text: String!
+
+ """
+ Tooltip associated with the pipeline status
+ """
tooltip: String!
}
@@ -1693,7 +1724,7 @@ type EpicIssue implements Noteable {
designCollection: DesignCollection
"""
- Deprecated. Use `design_collection`.
+ Deprecated. Use `design_collection`
"""
designs: DesignCollection @deprecated(reason: "use design_collection")
@@ -2508,7 +2539,7 @@ type Issue implements Noteable {
designCollection: DesignCollection
"""
- Deprecated. Use `design_collection`.
+ Deprecated. Use `design_collection`
"""
designs: DesignCollection @deprecated(reason: "use design_collection")
@@ -4312,26 +4343,69 @@ type PageInfo {
}
type Pipeline {
+ """
+ Base SHA of the source branch
+ """
beforeSha: String
+
+ """
+ Timestamp of the pipeline's commit
+ """
committedAt: Time
"""
Coverage percentage
"""
coverage: Float
+
+ """
+ Timestamp of the pipeline's creation
+ """
createdAt: Time!
+
+ """
+ Detailed status of the pipeline
+ """
detailedStatus: DetailedStatus!
"""
Duration of the pipeline in seconds
"""
duration: Int
+
+ """
+ Timestamp of the pipeline's completion
+ """
finishedAt: Time
+
+ """
+ ID of the pipeline
+ """
id: ID!
+
+ """
+ Internal ID of the pipeline
+ """
iid: String!
+
+ """
+ SHA of the pipeline's commit
+ """
sha: String!
+
+ """
+ Timestamp when the pipeline was started
+ """
startedAt: Time
+
+ """
+ Status of the pipeline (CREATED, PREPARING, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, SKIPPED, MANUAL, SCHEDULED)
+ """
status: PipelineStatusEnum!
+
+ """
+ Timestamp of the pipeline's last activity
+ """
updatedAt: Time!
"""
diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json
index 398ae52c130..3c30d2482e8 100644
--- a/doc/api/graphql/reference/gitlab_schema.json
+++ b/doc/api/graphql/reference/gitlab_schema.json
@@ -8148,7 +8148,7 @@
},
{
"name": "designs",
- "description": "Deprecated. Use `design_collection`.",
+ "description": "Deprecated. Use `design_collection`",
"args": [
],
@@ -9578,7 +9578,7 @@
},
{
"name": "designs",
- "description": "Deprecated. Use `design_collection`.",
+ "description": "Deprecated. Use `design_collection`",
"args": [
],
@@ -12029,7 +12029,7 @@
"fields": [
{
"name": "beforeSha",
- "description": null,
+ "description": "Base SHA of the source branch",
"args": [
],
@@ -12043,7 +12043,7 @@
},
{
"name": "committedAt",
- "description": null,
+ "description": "Timestamp of the pipeline's commit",
"args": [
],
@@ -12071,7 +12071,7 @@
},
{
"name": "createdAt",
- "description": null,
+ "description": "Timestamp of the pipeline's creation",
"args": [
],
@@ -12089,7 +12089,7 @@
},
{
"name": "detailedStatus",
- "description": null,
+ "description": "Detailed status of the pipeline",
"args": [
],
@@ -12121,7 +12121,7 @@
},
{
"name": "finishedAt",
- "description": null,
+ "description": "Timestamp of the pipeline's completion",
"args": [
],
@@ -12135,7 +12135,7 @@
},
{
"name": "id",
- "description": null,
+ "description": "ID of the pipeline",
"args": [
],
@@ -12153,7 +12153,7 @@
},
{
"name": "iid",
- "description": null,
+ "description": "Internal ID of the pipeline",
"args": [
],
@@ -12171,7 +12171,7 @@
},
{
"name": "sha",
- "description": null,
+ "description": "SHA of the pipeline's commit",
"args": [
],
@@ -12189,7 +12189,7 @@
},
{
"name": "startedAt",
- "description": null,
+ "description": "Timestamp when the pipeline was started",
"args": [
],
@@ -12203,7 +12203,7 @@
},
{
"name": "status",
- "description": null,
+ "description": "Status of the pipeline (CREATED, PREPARING, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, SKIPPED, MANUAL, SCHEDULED)",
"args": [
],
@@ -12221,7 +12221,7 @@
},
{
"name": "updatedAt",
- "description": null,
+ "description": "Timestamp of the pipeline's last activity",
"args": [
],
@@ -12408,7 +12408,7 @@
"fields": [
{
"name": "detailsPath",
- "description": null,
+ "description": "Path of the details for the pipeline status",
"args": [
],
@@ -12426,7 +12426,7 @@
},
{
"name": "favicon",
- "description": null,
+ "description": "Favicon of the pipeline status",
"args": [
],
@@ -12444,7 +12444,7 @@
},
{
"name": "group",
- "description": null,
+ "description": "Group of the pipeline status",
"args": [
],
@@ -12462,7 +12462,7 @@
},
{
"name": "hasDetails",
- "description": null,
+ "description": "Indicates if the pipeline status has further details",
"args": [
],
@@ -12480,7 +12480,7 @@
},
{
"name": "icon",
- "description": null,
+ "description": "Icon of the pipeline status",
"args": [
],
@@ -12498,7 +12498,7 @@
},
{
"name": "label",
- "description": null,
+ "description": "Label of the pipeline status",
"args": [
],
@@ -12516,7 +12516,7 @@
},
{
"name": "text",
- "description": null,
+ "description": "Text of the pipeline status",
"args": [
],
@@ -12534,7 +12534,7 @@
},
{
"name": "tooltip",
- "description": null,
+ "description": "Tooltip associated with the pipeline status",
"args": [
],
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 9fb39322f5c..1669e3d604c 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -165,14 +165,14 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
-| `group` | String! | |
-| `icon` | String! | |
-| `favicon` | String! | |
-| `detailsPath` | String! | |
-| `hasDetails` | Boolean! | |
-| `label` | String! | |
-| `text` | String! | |
-| `tooltip` | String! | |
+| `group` | String! | Group of the pipeline status |
+| `icon` | String! | Icon of the pipeline status |
+| `favicon` | String! | Favicon of the pipeline status |
+| `detailsPath` | String! | Path of the details for the pipeline status |
+| `hasDetails` | Boolean! | Indicates if the pipeline status has further details |
+| `label` | String! | Label of the pipeline status |
+| `text` | String! | Text of the pipeline status |
+| `tooltip` | String! | Tooltip associated with the pipeline status |
### DiffPosition
@@ -283,7 +283,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | Epic to which this issue belongs |
| `weight` | Int | Weight of the issue |
-| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
+| `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 |
@@ -378,7 +378,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
| `epic` | Epic | Epic to which this issue belongs |
| `weight` | Int | Weight of the issue |
-| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
+| `designs` | DesignCollection | Deprecated. Use `design_collection` |
| `designCollection` | DesignCollection | Collection of design images associated with this issue |
### IssuePermissions
@@ -631,19 +631,19 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description |
| --- | ---- | ---------- |
| `userPermissions` | PipelinePermissions! | Permissions for the current user on the resource |
-| `id` | ID! | |
-| `iid` | String! | |
-| `sha` | String! | |
-| `beforeSha` | String | |
-| `status` | PipelineStatusEnum! | |
-| `detailedStatus` | DetailedStatus! | |
+| `id` | ID! | ID of the pipeline |
+| `iid` | String! | Internal ID of the pipeline |
+| `sha` | String! | SHA of the pipeline's commit |
+| `beforeSha` | String | Base SHA of the source branch |
+| `status` | PipelineStatusEnum! | Status of the pipeline (CREATED, PREPARING, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, SKIPPED, MANUAL, SCHEDULED) |
+| `detailedStatus` | DetailedStatus! | Detailed status of the pipeline |
| `duration` | Int | Duration of the pipeline in seconds |
| `coverage` | Float | Coverage percentage |
-| `createdAt` | Time! | |
-| `updatedAt` | Time! | |
-| `startedAt` | Time | |
-| `finishedAt` | Time | |
-| `committedAt` | Time | |
+| `createdAt` | Time! | Timestamp of the pipeline's creation |
+| `updatedAt` | Time! | Timestamp of the pipeline's last activity |
+| `startedAt` | Time | Timestamp when the pipeline was started |
+| `finishedAt` | Time | Timestamp of the pipeline's completion |
+| `committedAt` | Time | Timestamp of the pipeline's commit |
### PipelinePermissions
diff --git a/doc/development/README.md b/doc/development/README.md
index 3a972c4c588..53133366c78 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -71,6 +71,7 @@ description: 'Learn how to contribute to GitLab.'
- [Auto DevOps development guide](auto_devops.md)
- [Mass Inserting Models](mass_insert.md)
- [Cycle Analytics development guide](cycle_analytics.md)
+- [Issue types vs first-class types](issue_types.md)
## Performance guides
@@ -106,6 +107,7 @@ description: 'Learn how to contribute to GitLab.'
### Debugging
- Tracing the source of an SQL query using query comments with [Marginalia](database_query_comments.md)
+- Tracing the source of an SQL query in Rails console using [Verbose Query Logs](https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logs)
### Best practices
diff --git a/doc/development/issue_types.md b/doc/development/issue_types.md
new file mode 100644
index 00000000000..bcd3980c298
--- /dev/null
+++ b/doc/development/issue_types.md
@@ -0,0 +1,45 @@
+# Issue Types
+
+Sometimes when a new resource type is added it's not clear if it should be only an
+"extension" of Issue (Issue Type) or if it should be a new first-class resource type
+(similar to Issue, Epic, Merge Request, Snippet).
+
+The idea of Issue Types was first proposed in [this
+issue](https://gitlab.com/gitlab-org/gitlab/issues/8767) and its usage was
+discussed few times since then, for example in [incident
+management](https://gitlab.com/gitlab-org/gitlab-foss/issues/55532).
+
+## What is an Issue Type
+
+Issue Type is a resource type which extends the existing Issue type and can be
+used anywhere where Issue is used - for example when listing or searching
+issues or when linking objects of the type from Epics. It should use the same
+`issues` table, additional fields can be stored in a separate table.
+
+## When an Issue Type should be used
+
+- When the new type only adds new fields to the basic Issue type without
+ removing existing fields (but it's OK if some fields from the basic Issue
+ type are hidden in user interface/API).
+- When the new type can be used anywhere where the basic Issue type is used.
+
+## When a first-class resource type should be used
+
+- When a separate model and table is used for the new resource.
+- When some fields of the basic Issue type need to be removed - hiding in the UI
+ is OK, but not complete removal.
+- When the new resource cannot be used instead of the basic Issue type,
+ for example:
+
+ - You can't add it to an epic.
+ - You can't close it from a commit or a merge request.
+ - You can't mark it as related to another issue.
+
+If an Issue type can not be used you can still define a first-class type and
+then include concerns such as `Issuable` or `Noteable` to reuse functionality
+which is common for all our issue-related resources. But you still need to
+define the interface for working with the new resource and update some other
+components to make them work with the new type.
+
+Usage of the Issue type limits what fields, functionality, or both is available
+for the type. However, this functionality is provided by default.