Skip to content

Commit

Permalink
Fix issue with parsing Jenkins job names created with the folders plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
AMeng committed Dec 3, 2015
1 parent 9bd43d5 commit 863c5c4
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,15 @@ class CreateBakeTaskSpec extends Specification {
]
]

@Shared
def buildInfoWithFoldersUrl = [
url: "http://spinnaker.builds.test.netflix.net/job/folder/job/SPINNAKER-package-echo/69/",
artifacts: [
[fileName: 'hodor_1.1_all.deb'],
[fileName: 'hodor-1.1.noarch.rpm']
]
]

@Shared
def buildInfoWithUrlAndSCM = [
url: "http://spinnaker.builds.test.netflix.net/job/SPINNAKER-package-echo/69/",
Expand Down Expand Up @@ -345,18 +354,18 @@ class CreateBakeTaskSpec extends Specification {
def result = task.execute(stage)
then:
result.outputs.with {
bakePackageName == "hodor_1.1_all"
buildHost == "http://spinnaker.builds.test.netflix.net/"
job == "SPINNAKER-package-echo"
buildNumber == "69"
!commitHash
}
result.outputs.bakePackageName == "hodor_1.1_all"
result.outputs.buildHost == "http://spinnaker.builds.test.netflix.net/"
result.outputs.job == jobName
result.outputs.buildNumber == "69"
!result.outputs.commitHash

where:
triggerInfo | contextInfo
buildInfoWithUrl | null
null | buildInfoWithUrl
triggerInfo | contextInfo | jobName
buildInfoWithUrl | null | "SPINNAKER-package-echo"
null | buildInfoWithUrl | "SPINNAKER-package-echo"
buildInfoWithFoldersUrl | null | "folder/job/SPINNAKER-package-echo"
null | buildInfoWithFoldersUrl | "folder/job/SPINNAKER-package-echo"
}

@Unroll
Expand All @@ -375,13 +384,11 @@ class CreateBakeTaskSpec extends Specification {
def result = task.execute(stage)

then:
result.outputs.with {
bakePackageName == "hodor_1.1_all"
buildHost == "http://spinnaker.builds.test.netflix.net/"
job == "SPINNAKER-package-echo"
buildNumber == "69"
commitHash == "f83a447f8d02a40fa84ec9d4d0dccd263d51782d"
}
result.outputs.bakePackageName == "hodor_1.1_all"
result.outputs.buildHost == "http://spinnaker.builds.test.netflix.net/"
result.outputs.job == "SPINNAKER-package-echo"
result.outputs.buildNumber == "69"
result.outputs.commitHash == "f83a447f8d02a40fa84ec9d4d0dccd263d51782d"

where:
triggerInfo | contextInfo
Expand All @@ -405,13 +412,11 @@ class CreateBakeTaskSpec extends Specification {
def result = task.execute(stage)

then:
result.outputs.with {
bakePackageName == "hodor_1.1_all"
buildHost == "http://spinnaker.builds.test.netflix.net/"
job == "SPINNAKER-package-echo"
buildNumber == "69"
commitHash == "1234567f8d02a40fa84ec9d4d0dccd263d51782d"
}
result.outputs.bakePackageName == "hodor_1.1_all"
result.outputs.buildHost == "http://spinnaker.builds.test.netflix.net/"
result.outputs.job == "SPINNAKER-package-echo"
result.outputs.buildNumber == "69"
result.outputs.commitHash == "1234567f8d02a40fa84ec9d4d0dccd263d51782d"

where:
triggerInfo | contextInfo
Expand All @@ -435,13 +440,11 @@ class CreateBakeTaskSpec extends Specification {
def result = task.execute(stage)

then:
result.outputs.with {
bakePackageName == "hodor_1.1_all"
buildHost == "http://spinnaker.builds.test.netflix.net/"
job == "SPINNAKER-package-echo"
buildNumber == "69"
commitHash == "f83a447f8d02a40fa84ec9d4d0dccd263d51782d"
}
result.outputs.bakePackageName == "hodor_1.1_all"
result.outputs.buildHost == "http://spinnaker.builds.test.netflix.net/"
result.outputs.job == "SPINNAKER-package-echo"
result.outputs.buildNumber == "69"
result.outputs.commitHash == "f83a447f8d02a40fa84ec9d4d0dccd263d51782d"

where:
triggerInfo | contextInfo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,12 +245,14 @@ class CreateCloudFoundryDeployTask implements Task {

@CompileDynamic
// Naming-convention for buildInfo.url is $protocol://$buildHost/job/$job/$buildNumber/.
// For example: http://spinnaker.builds.test.netflix.net/job/SPINNAKER-package-echo/69/
// For example: http://spinnaker.builds.test.netflix.net/job/jobName/69/
// Note that job names can contain slashes if using the Folders plugin.
// For example: http://spinnaker.builds.test.netflix.net/job/folder1/job/job1/69/
def parseBuildInfoUrl(String url) {
List<String> urlParts = url?.tokenize("/")

def buildNumber = urlParts.pop()
def job = urlParts.pop()
def job = urlParts[3..-1].join('/')

[job, buildNumber]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,15 +179,14 @@ class PackageInfo {
@CompileDynamic
// Naming-convention for buildInfo.url is $protocol://$buildHost/job/$job/$buildNumber/.
// For example: http://spinnaker.builds.test.netflix.net/job/SPINNAKER-package-echo/69/
// Note that job names can contain slashes if using the Folders plugin.
// For example: http://spinnaker.builds.test.netflix.net/job/folder1/job/job1/69/
def parseBuildInfoUrl(String url) {
List<String> urlParts = url?.tokenize("/")

if (urlParts?.size == 5) {
if (urlParts?.size >= 5) {
def buildNumber = urlParts.pop()
def job = urlParts.pop()

// Discard 'job' path segment.
urlParts.pop()
def job = urlParts[3..-1].join('/')

def buildHost = "${urlParts[0]}//${urlParts[1]}/"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import spock.lang.Unroll
class PackageInfoSpec extends Specification {

@Subject
PackageInfo info = new PackageInfo(Mock(Stage), 'deb', '_', false, true, Mock(ObjectMapper))
PackageInfo info = new PackageInfo(Mock(Stage), 'deb', '_', true, true, Mock(ObjectMapper))

Map buildInfo = [
artifacts: [
Expand Down Expand Up @@ -73,4 +73,14 @@ class PackageInfoSpec extends Specification {
info.createAugmentedRequest(trigger, buildInfo, request).package == 'dos_1.0-h2'
}

void "should parse the build info url into expected parts"() {
expect:
info.parseBuildInfoUrl(pattern) == expectedResult

where:
pattern || expectedResult
"http://jenkins.com/job/jobName/123" || ["http://jenkins.com/", "jobName", "123"]
"http://jenkins.com/job/folder/job/jobName/123" || ["http://jenkins.com/", "folder/job/jobName", "123"]
}

}

0 comments on commit 863c5c4

Please sign in to comment.