Commit 6c6c7c3c authored by Chris Rohr's avatar Chris Rohr

Addresses regression with jenkins setup that does not use the multiproject setup

parent 54878022
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
class JenkinsService < CiService class JenkinsService < CiService
prop_accessor :project_url prop_accessor :project_url
prop_accessor :multiproject_enabled
validates :project_url, presence: true, if: :activated? validates :project_url, presence: true, if: :activated?
...@@ -46,13 +47,23 @@ class JenkinsService < CiService ...@@ -46,13 +47,23 @@ class JenkinsService < CiService
def fields def fields
[ [
{ type: 'text', name: 'project_url', placeholder: 'Jenkins project URL like http://jenkins.example.com/job/my-project/' } { type: 'text', name: 'project_url', placeholder: 'Jenkins project URL like http://jenkins.example.com/job/my-project/' },
{ type: 'checkbox', name: 'multiproject_enabled', title: "Multi-project setup enabled?",
help: "Multi-project mode is configured in Jenkins Gitlab Hook plugin." }
] ]
end end
def multiproject_enabled?
self.multiproject_enabled == '1'
end
def build_page(sha, ref = nil) def build_page(sha, ref = nil)
if multiproject_enabled?
base_url = ref.nil? || ref == 'master' ? project_url : "#{project_url}_#{ref}" base_url = ref.nil? || ref == 'master' ? project_url : "#{project_url}_#{ref}"
base_url + "/scm/bySHA1/#{sha}" base_url + "/scm/bySHA1/#{sha}"
else
project_url + "/scm/bySHA1/#{sha}"
end
end end
def commit_status(sha, ref = nil) def commit_status(sha, ref = nil)
......
...@@ -35,16 +35,17 @@ describe JenkinsService do ...@@ -35,16 +35,17 @@ describe JenkinsService do
eos eos
end end
describe :commit_status do
before do before do
@service = JenkinsService.new @service = JenkinsService.new
allow(@service).to receive_messages( allow(@service).to receive_messages(
service_hook: true, service_hook: true,
project_url: 'http://jenkins.gitlab.org/projects/2', project_url: 'http://jenkins.gitlab.org/projects/2',
multiproject_enabled: '1',
token: 'verySecret' token: 'verySecret'
) )
end end
describe :commit_status do
statuses = { 'blue.png' => 'success', 'yellow.png' => 'failed', 'red.png' => 'failed', 'aborted.png' => 'failed', 'blue-anime.gif' => 'running', 'grey.png' => 'pending' } statuses = { 'blue.png' => 'success', 'yellow.png' => 'failed', 'red.png' => 'failed', 'aborted.png' => 'failed', 'blue-anime.gif' => 'running', 'grey.png' => 'pending' }
statuses.each do |icon, state| statuses.each do |icon, state|
it "should have a status of #{state} when the icon #{icon} exists." do it "should have a status of #{state} when the icon #{icon} exists." do
...@@ -54,6 +55,17 @@ eos ...@@ -54,6 +55,17 @@ eos
end end
end end
describe 'multiproject enabled' do
before do
@service = JenkinsService.new
allow(@service).to receive_messages(
service_hook: true,
project_url: 'http://jenkins.gitlab.org/projects/2',
multiproject_enabled: '1',
token: 'verySecret'
)
end
describe :build_page do describe :build_page do
it { expect(@service.build_page("2ab7834c", 'master')).to eq("http://jenkins.gitlab.org/projects/2/scm/bySHA1/2ab7834c") } it { expect(@service.build_page("2ab7834c", 'master')).to eq("http://jenkins.gitlab.org/projects/2/scm/bySHA1/2ab7834c") }
end end
...@@ -62,4 +74,25 @@ eos ...@@ -62,4 +74,25 @@ eos
it { expect(@service.build_page("2ab7834c", 'test_branch')).to eq("http://jenkins.gitlab.org/projects/2_test_branch/scm/bySHA1/2ab7834c") } it { expect(@service.build_page("2ab7834c", 'test_branch')).to eq("http://jenkins.gitlab.org/projects/2_test_branch/scm/bySHA1/2ab7834c") }
end end
end end
describe 'multiproject disabled' do
before do
@service = JenkinsService.new
allow(@service).to receive_messages(
service_hook: true,
project_url: 'http://jenkins.gitlab.org/projects/2',
multiproject_enabled: '0',
token: 'verySecret'
)
end
describe :build_page do
it { expect(@service.build_page("2ab7834c", 'master')).to eq("http://jenkins.gitlab.org/projects/2/scm/bySHA1/2ab7834c") }
end
describe :build_page_with_branch do
it { expect(@service.build_page("2ab7834c", 'test_branch')).to eq("http://jenkins.gitlab.org/projects/2/scm/bySHA1/2ab7834c") }
end
end
end
end end
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