Commit d77ba26e authored by GitLab Bot's avatar GitLab Bot

Automatic merge of gitlab-org/gitlab-ce master

parents b641e0c3 85552d7e
......@@ -2,11 +2,11 @@
class PipelinesEmailService < Service
prop_accessor :recipients
boolean_accessor :notify_only_broken_pipelines
boolean_accessor :notify_only_broken_pipelines, :notify_only_default_branch
validates :recipients, presence: true, if: :valid_recipients?
def initialize_properties
self.properties ||= { notify_only_broken_pipelines: true }
self.properties ||= { notify_only_broken_pipelines: true, notify_only_default_branch: false }
end
def title
......@@ -54,7 +54,9 @@ class PipelinesEmailService < Service
placeholder: _('Emails separated by comma'),
required: true },
{ type: 'checkbox',
name: 'notify_only_broken_pipelines' }
name: 'notify_only_broken_pipelines' },
{ type: 'checkbox',
name: 'notify_only_default_branch' }
]
end
......@@ -67,6 +69,16 @@ class PipelinesEmailService < Service
end
def should_pipeline_be_notified?(data)
notify_for_pipeline_branch?(data) && notify_for_pipeline?(data)
end
def notify_for_pipeline_branch?(data)
return true unless notify_only_default_branch?
data[:object_attributes][:ref] == data[:project][:default_branch]
end
def notify_for_pipeline?(data)
case data[:object_attributes][:status]
when 'success'
!notify_only_broken_pipelines?
......
......@@ -16,7 +16,7 @@
%th Runner
%th Stage
%th Name
%th
%th Timing
%th Coverage
%th
......
---
title: Add notify_only_default_branch option to PipelinesEmailService
merge_request: 28271
author: Peter Marko
type: added
---
title: Add a column header to admin/jobs page
merge_request: 28837
author:
type: other
......@@ -754,6 +754,7 @@ Parameters:
| `recipients` | string | yes | Comma-separated list of recipient email addresses |
| `add_pusher` | boolean | no | Add pusher to recipients list |
| `notify_only_broken_pipelines` | boolean | no | Notify only broken pipelines |
| `notify_only_default_branch` | boolean | no | Send notifications only for the default branch ([introduced in GitLab 12.0](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/28271)) |
### Delete Pipeline-Emails service
......
......@@ -381,7 +381,7 @@ Takes changes from one branch, and [applies them](https://git-scm.com/docs/git-m
[Arises](https://about.gitlab.com/2016/09/06/resolving-merge-conflicts-from-the-gitlab-ui/) when a merge can't be performed cleanly between two versions of the same file.
#### Merge Request
#### Merge Request (MR)
[Takes changes](../../gitlab-basics/add-merge-request.md) from one branch, and applies them into another branch.
......
......@@ -563,6 +563,12 @@ module API
name: :notify_only_broken_pipelines,
type: Boolean,
desc: 'Notify only broken pipelines'
},
{
required: false,
name: :notify_only_default_branch,
type: Boolean,
desc: 'Send notifications only for the default branch'
}
],
'pivotaltracker' => [
......
......@@ -4,7 +4,11 @@ require 'spec_helper'
describe PipelinesEmailService, :mailer do
let(:pipeline) do
create(:ci_pipeline, project: project, sha: project.commit('master').sha)
create(:ci_pipeline, :failed,
project: project,
sha: project.commit('master').sha,
ref: project.default_branch
)
end
let(:project) { create(:project, :repository) }
......@@ -84,12 +88,7 @@ describe PipelinesEmailService, :mailer do
subject.test(data)
end
context 'when pipeline is failed' do
before do
data[:object_attributes][:status] = 'failed'
pipeline.update(status: 'failed')
end
context 'when pipeline is failed and on default branch' do
it_behaves_like 'sending email'
end
......@@ -101,6 +100,25 @@ describe PipelinesEmailService, :mailer do
it_behaves_like 'sending email'
end
context 'when pipeline is failed and on a non-default branch' do
before do
data[:object_attributes][:ref] = 'not-the-default-branch'
pipeline.update(ref: 'not-the-default-branch')
end
context 'with notify_only_default branch on' do
before do
subject.notify_only_default_branch = true
end
it_behaves_like 'sending email'
end
context 'with notify_only_default_branch off' do
it_behaves_like 'sending email'
end
end
end
describe '#execute' do
......@@ -110,11 +128,6 @@ describe PipelinesEmailService, :mailer do
context 'with recipients' do
context 'with failed pipeline' do
before do
data[:object_attributes][:status] = 'failed'
pipeline.update(status: 'failed')
end
it_behaves_like 'sending email'
end
......@@ -133,11 +146,6 @@ describe PipelinesEmailService, :mailer do
end
context 'with failed pipeline' do
before do
data[:object_attributes][:status] = 'failed'
pipeline.update(status: 'failed')
end
it_behaves_like 'sending email'
end
......@@ -150,6 +158,40 @@ describe PipelinesEmailService, :mailer do
it_behaves_like 'not sending email'
end
end
context 'with notify_only_default_branch off' do
context 'with default branch' do
it_behaves_like 'sending email'
end
context 'with non default branch' do
before do
data[:object_attributes][:ref] = 'not-the-default-branch'
pipeline.update(ref: 'not-the-default-branch')
end
it_behaves_like 'sending email'
end
end
context 'with notify_only_default_branch on' do
before do
subject.notify_only_default_branch = true
end
context 'with default branch' do
it_behaves_like 'sending email'
end
context 'with non default branch' do
before do
data[:object_attributes][:ref] = 'not-the-default-branch'
pipeline.update(ref: 'not-the-default-branch')
end
it_behaves_like 'not sending email'
end
end
end
context 'with empty recipients list' 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