Merge branch 'pipelines-email-default-branch-filter' into 'master'
Add notify_only_default_branch option to PipelinesEmailService Closes #61721 See merge request gitlab-org/gitlab-ce!28271
This commit is contained in:
commit
85552d7ed7
5 changed files with 86 additions and 20 deletions
|
@ -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?
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add notify_only_default_branch option to PipelinesEmailService
|
||||
merge_request: 28271
|
||||
author: Peter Marko
|
||||
type: added
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue