Commit b6ef8538 authored by GitLab Bot's avatar GitLab Bot
Browse files

Add latest changes from gitlab-org/gitlab@master

parent c345b24a6e0b
......@@ -299,7 +299,11 @@ RSpec/ImplicitSubject:
Enabled: false
Enabled: false
Enabled: true
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
- 'qa/spec/**/*.rb'
Enabled: false
......@@ -34,6 +34,7 @@ class Service < ApplicationRecord
validates :project_id, presence: true, unless: -> { template? || instance? }
validates :project_id, absence: true, if: -> { template? || instance? }
validates :type, uniqueness: { scope: :project_id }, unless: -> { template? || instance? }, on: :create
validates :type, presence: true
validates :template, uniqueness: { scope: :type }, if: -> { template? }
validates :instance, uniqueness: { scope: :type }, if: -> { instance? }
cd $(dirname $0)/..
cd $(dirname $0)/..
cd $(dirname $0)/..
title: Validate uniqueness of project_id and type when a new project service is created
merge_request: 26308
type: fixed
......@@ -151,6 +151,56 @@ A few notes:
cycles, calculate their median time and the result is what the dashboard of
Value Stream Analytics is showing.
## Customizable Value Stream Analytics
The default stages are designed to work straight out of the box, but they might not be suitable for all teams. Different teams use different approaches to building software, so some teams might want to customize their Value Stream Analytics. From GitLab 12.9, users can hide default stages and create custom stages that align better to their development workflow.
### Adding a stage
In the following example we're creating a new stage that measures and tracks issues from creation time until they are closed.
1. Navigate to your group page.
1. Open Value Stream Analytics from the sidebar: **Analytics > Value Stream**
1. Click the "Add a stage" button.
1. Fill in the new stage form:
- Name: Issue start to finish
- Start event: Issue created
- End event: Issue closed
1. Click the "Add stage" button.
![New Value Stream Analytics Stage](img/new_vsm_stage_v12_9.png "Form for creating a new stage")
The new stage is persisted and it will always show up on the value stream analytics page for your group. In case you want to alter or delete the stage you can easily do that for customized stages by hovering over the stage and clicking the three-dot icon that appears.
![Value Stream Analytics Stages](img/vsm_stage_list_v12_9.png)
Creating a custom stage requires specifying two events, a start and an end. Be careful to choose a start event that occurs *before* your end event. For example, consider if a stage started when an issue is added to a board, and ended when the issue is created. This stage would not work because the end event has already happened when the start event occurs. To prevent such invalid stages, the form prohibits incompatible start and end events. After you select the start event, the stop event dropdown will only list the compatible events.
Note: The ability to re-order the stages is a [planned enhancement](
### Label based stages
The pre-defined start and end events can cover many use cases involving both issues and merge requests. For supporting more complex workflows, we can use stages based on group labels. These events are based on labels being added/removed. In particular, [scoped labels](../project/ are useful for complex workflows.
In this example we'd like to measure more accurate code review times. The workflow is the following:
- When the code review starts, the reviewer adds `workflow::code_review_start` label to the merge request.
- When the code review is finished, the reviewer adds `workflow::code_review_complete` label to the merge request.
Creating a new stage called "Code Review":
![New Label Based Value Stream Analytics Stage](img/label_based_stage_vsm_v12_9.png "Creating a label based Value Stream Analytics Stage")
### Hiding unused stages
Sometimes certain default stages are not relevant to a team. In this case you can easily hide stages so they no longer appear in the list. First, add a custom stage to activate customizability. Then hover over the default stage you want to hide, click the three-dot icon that appears and select "Hide stage".
To recover a default stage that was previously hidden:
1. Click "Add a stage" button.
1. In the top right corner open the "Recover hidden stage" dropdown.
1. Select a stage.
## Days to completion chart
> [Introduced]( in GitLab 12.6.
......@@ -7312,7 +7312,7 @@
"tag_push_events": true,
"note_events": true,
"job_events": true,
"type": "AssemblaService",
"type": "AsanaService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -125,7 +125,7 @@
"id": 101,
"title": "JetBrains TeamCity CI",
"title": "Jira",
"project_id": 5,
"created_at": "2016-06-14T15:01:51.315Z",
"updated_at": "2016-06-14T15:01:51.315Z",
......@@ -139,7 +139,7 @@
"tag_push_events": true,
"note_events": true,
"job_events": true,
"type": "TeamcityService",
"type": "JiraService",
"category": "ci",
"default": false,
"wiki_page_events": true
......@@ -56,6 +56,14 @@
expect(build(:service, :instance)).to be_invalid
it 'validates uniqueness of type and project_id on create' do
project = create(:project)
expect(create(:service, project: project, type: 'Service')).to be_valid
expect(build(:service, project: project, type: 'Service').valid?(:create)).to eq(false)
expect(build(:service, project: project, type: 'Service').valid?(:update)).to eq(true)
describe 'Scopes' do
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment