parent
b1dda81454
commit
c9f202b2ef
|
@ -3,26 +3,27 @@ module Emails
|
||||||
def build_fail_email(build_id, to)
|
def build_fail_email(build_id, to)
|
||||||
@build = Ci::Build.find(build_id)
|
@build = Ci::Build.find(build_id)
|
||||||
@project = @build.project
|
@project = @build.project
|
||||||
|
|
||||||
add_project_headers
|
add_project_headers
|
||||||
add_build_headers
|
add_build_headers('failed')
|
||||||
headers['X-GitLab-Build-Status'] = "failed"
|
|
||||||
mail(to: to, subject: subject("Build failed for #{@project.name}", @build.short_sha))
|
mail(to: to, subject: subject("Build failed for #{@project.name}", @build.short_sha))
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_success_email(build_id, to)
|
def build_success_email(build_id, to)
|
||||||
@build = Ci::Build.find(build_id)
|
@build = Ci::Build.find(build_id)
|
||||||
@project = @build.project
|
@project = @build.project
|
||||||
|
|
||||||
add_project_headers
|
add_project_headers
|
||||||
add_build_headers
|
add_build_headers('success')
|
||||||
headers['X-GitLab-Build-Status'] = "success"
|
|
||||||
mail(to: to, subject: subject("Build success for #{@project.name}", @build.short_sha))
|
mail(to: to, subject: subject("Build success for #{@project.name}", @build.short_sha))
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def add_build_headers
|
|
||||||
|
def add_build_headers(status)
|
||||||
headers['X-GitLab-Build-Id'] = @build.id
|
headers['X-GitLab-Build-Id'] = @build.id
|
||||||
headers['X-GitLab-Build-Ref'] = @build.ref
|
headers['X-GitLab-Build-Ref'] = @build.ref
|
||||||
|
headers['X-GitLab-Build-Status'] = status.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
- content_for :header do
|
- content_for :header do
|
||||||
%h1{style: "background: #c40834; color: #FFF; font: normal 20px Helvetica, Arial, sans-serif; margin: 0; padding: 5px 10px; line-height: 32px; font-size: 16px;"}
|
%h1{style: "background: #c40834; color: #FFF; font: normal 20px Helvetica, Arial, sans-serif; margin: 0; padding: 5px 10px; line-height: 32px; font-size: 16px;"}
|
||||||
GitLab (build failed)
|
GitLab (build failed)
|
||||||
|
|
||||||
%h3
|
%h3
|
||||||
Project:
|
Project:
|
||||||
= link_to ci_project_url(@project) do
|
= link_to namespace_project_url(@project.namespace, @project) do
|
||||||
= @project.name
|
= @project.name
|
||||||
|
|
||||||
%p
|
%p
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
%h3
|
%h3
|
||||||
Project:
|
Project:
|
||||||
= link_to ci_project_url(@project) do
|
= link_to namespace_project_url(@project.namespace, @project) do
|
||||||
= @project.name
|
= @project.name
|
||||||
|
|
||||||
%p
|
%p
|
||||||
|
|
|
@ -13,7 +13,6 @@ describe Notify do
|
||||||
let(:gitlab_sender_reply_to) { Gitlab.config.gitlab.email_reply_to }
|
let(:gitlab_sender_reply_to) { Gitlab.config.gitlab.email_reply_to }
|
||||||
let(:recipient) { create(:user, email: 'recipient@example.com') }
|
let(:recipient) { create(:user, email: 'recipient@example.com') }
|
||||||
let(:project) { create(:project) }
|
let(:project) { create(:project) }
|
||||||
let(:build) { create(:ci_build) }
|
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
|
@ -48,13 +47,6 @@ describe Notify do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
shared_examples 'an email with X-GitLab headers containing build details' do
|
|
||||||
it 'has X-GitLab-Build* headers' do
|
|
||||||
is_expected.to have_header 'X-GitLab-Build-Id', /#{build.id}/
|
|
||||||
is_expected.to have_header 'X-GitLab-Build-Ref', /#{build.ref}/
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
shared_examples 'an email that contains a header with author username' do
|
shared_examples 'an email that contains a header with author username' do
|
||||||
it 'has X-GitLab-Author header containing author\'s username' do
|
it 'has X-GitLab-Author header containing author\'s username' do
|
||||||
is_expected.to have_header 'X-GitLab-Author', user.username
|
is_expected.to have_header 'X-GitLab-Author', user.username
|
||||||
|
@ -971,49 +963,59 @@ describe Notify do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'build notification email' do
|
||||||
|
let(:build) { create(:ci_build) }
|
||||||
|
let(:project) { build.project }
|
||||||
|
|
||||||
|
shared_examples 'build email' do
|
||||||
|
it 'contains name of project' do
|
||||||
|
is_expected.to have_body_text build.project_name
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'contains link to project' do
|
||||||
|
is_expected.to have_body_text namespace_project_path(project.namespace, project)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples 'an email with X-GitLab headers containing build details' do
|
||||||
|
it 'has X-GitLab-Build* headers' do
|
||||||
|
is_expected.to have_header 'X-GitLab-Build-Id', /#{build.id}/
|
||||||
|
is_expected.to have_header 'X-GitLab-Build-Ref', /#{build.ref}/
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'build success' do
|
describe 'build success' do
|
||||||
|
subject { Notify.build_success_email(build.id, 'wow@example.com') }
|
||||||
before { build.success }
|
before { build.success }
|
||||||
|
|
||||||
subject { Notify.build_success_email(build.id, 'wow@example.com') }
|
it_behaves_like 'build email'
|
||||||
|
|
||||||
it_behaves_like 'an email with X-GitLab headers containing build details'
|
it_behaves_like 'an email with X-GitLab headers containing build details'
|
||||||
it_behaves_like 'an email with X-GitLab headers containing project details' do
|
it_behaves_like 'an email with X-GitLab headers containing project details'
|
||||||
let(:project) { build.project }
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'has header indicating build status' do
|
it 'has header indicating build status' do
|
||||||
is_expected.to have_header 'X-GitLab-Build-Status', 'success'
|
is_expected.to have_header 'X-GitLab-Build-Status', 'success'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'has the correct subject' do
|
it 'has the correct subject' do
|
||||||
should have_subject /Build success for/
|
is_expected.to have_subject /Build success for/
|
||||||
end
|
|
||||||
|
|
||||||
it 'contains name of project' do
|
|
||||||
should have_body_text build.project_name
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'build fail' do
|
describe 'build fail' do
|
||||||
|
subject { Notify.build_fail_email(build.id, 'wow@example.com') }
|
||||||
before { build.drop }
|
before { build.drop }
|
||||||
|
|
||||||
subject { Notify.build_fail_email(build.id, 'wow@example.com') }
|
it_behaves_like 'build email'
|
||||||
|
|
||||||
it_behaves_like 'an email with X-GitLab headers containing build details'
|
it_behaves_like 'an email with X-GitLab headers containing build details'
|
||||||
it_behaves_like 'an email with X-GitLab headers containing project details' do
|
it_behaves_like 'an email with X-GitLab headers containing project details'
|
||||||
let(:project) { build.project }
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'has header indicating build status' do
|
it 'has header indicating build status' do
|
||||||
is_expected.to have_header 'X-GitLab-Build-Status', 'failed'
|
is_expected.to have_header 'X-GitLab-Build-Status', 'failed'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'has the correct subject' do
|
it 'has the correct subject' do
|
||||||
should have_subject /Build failed for/
|
is_expected.to have_subject /Build failed for/
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'contains name of project' do
|
|
||||||
should have_body_text build.project_name
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue