X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=dsl%2Fkernel-lttng-modules.seed.groovy.orig;fp=dsl%2Fkernel-lttng-modules.seed.groovy.orig;h=0000000000000000000000000000000000000000;hb=8a67d4900aa6758edac048c9b4681614ea76133e;hp=0442c21ef36180e2f1bed647640238d16cd26d3f;hpb=c01d9b1161812326f5921f8e4e3ad5c71a3e3704;p=lttng-ci.git diff --git a/dsl/kernel-lttng-modules.seed.groovy.orig b/dsl/kernel-lttng-modules.seed.groovy.orig deleted file mode 100644 index 0442c21..0000000 --- a/dsl/kernel-lttng-modules.seed.groovy.orig +++ /dev/null @@ -1,343 +0,0 @@ -enum KernelVersioning { - MAJOR,MINOR,REVISION,BUILD -} - -class BasicVersion implements Comparable { - int major = -1 - int minor = -1 - int revision = -1 - int build = -1 - int rc = -1 - String gitRefs - - // Default Constructor - BasicVersion() {} - - // Parse a version string of format X.Y.Z.W-A - BasicVersion(String version, String ref) { - gitRefs = ref - def tokenVersion - def token - if (version.contains('-')) { - // Release canditate - token = version.tokenize('-') - tokenVersion = token[0] - if (token[1]?.isInteger()) { - rc = token[1].toInteger() - } - } else { - tokenVersion = version - } - - tokenVersion = tokenVersion.tokenize('.') - - def tagEnum = KernelVersioning.MAJOR - tokenVersion.each { - if (it?.isInteger()) { - switch (tagEnum) { - case KernelVersioning.MAJOR: - major = it.toInteger() - tagEnum = KernelVersioning.MINOR - break - case KernelVersioning.MINOR: - minor = it.toInteger() - tagEnum = KernelVersioning.REVISION - break - case KernelVersioning.REVISION: - revision = it.toInteger() - tagEnum = KernelVersioning.BUILD - break - case KernelVersioning.BUILD: - build = it.toInteger() - tagEnum = -1 - break - default: - println("Unsupported version extension") - println("Trying to parse: ${version}") - println("Invalid sub version value: ${it}") - //TODO: throw exception for jenkins - } - } - } - } - - String print() { - String ret = "" - if (major != -1) { - ret += major - if (minor != -1) { - ret += "." + minor - if (revision != -1) { - ret += "." + revision - if (build != -1) { - ret += "." + build - } - } - } - if (rc != -1) { - ret += "-rc" + rc - } - } - return ret - } - - @Override - int compareTo(BasicVersion kernelVersion) { - return major <=> kernelVersion.major ?: minor <=> kernelVersion.minor ?: revision <=> kernelVersion.revision ?: build <=> kernelVersion.build ?: rc <=> kernelVersion.rc - } -} - -<<<<<<< HEAD -def kernelTagCutOff = new BasicVersion("3.0", "") -def modulesBranches = ["master","stable-2.5","stable-2.6", "stable-2.4"] -======= -def kernelTagCutOff = new BasicVersion("4.0", "") -def modulesBranches = ["master","stable-2.5.0","stable-2.6.0", "stable-2.4.0"] ->>>>>>> parent of badc51e... demo - - -def linuxURL = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git" -def modulesURL = "git://git.lttng.org/lttng-modules.git" - -// Linux specific variable -String linuxCheckoutTo = "linux-source" -String recipeCheckoutTo = "recipe" -String modulesCheckoutTo = "lttng-modules" - -def linuxGitReference = "/home/jenkins/gitcache/linux-stable.git" - -// Check if we are on jenkins -// Useful for outside jenkins devellopment related to groovy only scripting -def isJenkinsInstance = binding.variables.containsKey('JENKINS_HOME') - -// Fetch tags and format -// Split the string into sections based on | -// And pipe the results together -String process = "git ls-remote -t $linuxURL | cut -c42- | sort -V" -def out = new StringBuilder() -def err = new StringBuilder() -Process result = process.tokenize( '|' ).inject( null ) { p, c -> - if( p ) - p | c.execute() - else - c.execute() -} - -result.waitForProcessOutput(out,err) - -if ( result.exitValue() == 0 ) { - def branches = out.readLines().collect { - // Scrap special string tag - it.replaceAll("\\^\\{\\}", '') - } - - branches = branches.unique() - - List versions = [] - branches.each { branch -> - def stripBranch = branch.replaceAll("rc", '').replaceAll(/refs\/tags\/v/,'') - BasicVersion kVersion = new BasicVersion(stripBranch, branch) - versions.add(kVersion) - } - - // Sort the version via Comparable implementation of KernelVersion - versions = versions.sort() - - // Find the version cutoff - def cutoffPos = versions.findIndexOf{(it.major >= kernelTagCutOff.major) && (it.minor >= kernelTagCutOff.minor) && (it.revision >= kernelTagCutOff.revision) && (it.build >= kernelTagCutOff.build) && (it.rc >= kernelTagCutOff.rc)} - - // Get last version and include only last rc - def last - def lastNoRcPos - last = versions.last() - if (last.rc != -1) { - int i = versions.size()-1 - while (i > -1 && versions[i].rc != -1 ) { - i-- - } - lastNoRcPos = i + 1 - } else { - lastNoRcPos = versions.size() - } - - String modulesPrefix = "lttng-modules" - String kernelPrefix = "dsl-kernel" - String separator = "-" - // Actual job creation - for (int i = cutoffPos; i < versions.size() ; i++) { - - // Only create for valid build - if ( (i < lastNoRcPos && versions[i].rc == -1) || (i >= lastNoRcPos)) { - println ("Preparing job for") - - String jobName = kernelPrefix + separator + versions[i].print() - - // Generate modules job based on supported modules jobs - def modulesJob = [:] - modulesBranches.each { branch -> - modulesJob[branch] = modulesPrefix + separator + branch + separator + jobName - } - - // Jenkins only dsl - println(jobName) - if (isJenkinsInstance) { - matrixJob("${jobName}") { - using("linux-master") - scm { - git { - remote { - url("${linuxURL}") - } - branch(versions[i].gitRefs) - shallowClone(true) - relativeTargetDir(linuxCheckoutTo) - reference(linuxGitReference) - } - } - publishers { - modulesJob.each { - downstream(it.value, 'SUCCESS') - } - } - } - } - // Corresponding Module job - modulesJob.each { job -> - println("\t" + job.key + " " + job.value) - if (isJenkinsInstance) { - matrixJob(job.value) { - using("modules") - multiscm { - git { - remote { - name(kernelPrefix) - url("${linuxURL}") - } - branch(versions[i].gitRefs) - shallowClone(true) - relativeTargetDir(linuxCheckoutTo) - reference(linuxGitReference) - } - git { - remote { - name(modulesPrefix) - url(modulesURL) - } - branch(job.key) - relativeTargetDir(modulesCheckoutTo) - } - } - steps { - copyArtifacts("${jobName}/arch=\$arch", "linux-artifact/**", '', false, false) { - latestSuccessful(true) // Latest successful build - } - shell(readFileFromWorkspace('lttng-modules/lttng-modules-dsl-master.sh')) - } - } - } - } - } - } - - // Trigger generations - def dslTriggerKernel = """\ - -import hudson.model.* -import hudson.AbortException -import hudson.console.HyperlinkNote -import java.util.concurrent.CancellationException - - -def jobs = hudson.model.Hudson.instance.items -def fail = false -def jobStartWith = "${kernelPrefix}" - -def anotherBuild -jobs.each { job -> - def jobName = job.getName() - if (jobName.startsWith(jobStartWith)) { - def lastBuild = job.getLastBuild() - if (lastBuild == null) { - try { - def future = job.scheduleBuild2(0, new Cause.UpstreamCause(build)) - println "\\tWaiting for the completion of " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) - anotherBuild = future.get() - } catch (CancellationException x) { - throw new AbortException("\${job.fullDisplayName} aborted.") - } - println HyperlinkNote.encodeTo('/' + anotherBuild.url, anotherBuild.fullDisplayName) + " completed. Result was " + anotherBuild.result - - build.result = anotherBuild.result - if (anotherBuild.result != Result.SUCCESS && anotherBuild.result != Result.UNSTABLE) { - // We abort this build right here and now. - fail = true - println("Build Failed") - } - } else { - println("\\tAlready built") - } - } -} - -if (fail){ - throw new AbortException("Some job failed") -} -""" - def dslTriggerModule = """\ -import hudson.model.* -import hudson.AbortException -import hudson.console.HyperlinkNote -import java.util.concurrent.CancellationException - - -def jobs = hudson.model.Hudson.instance.items -def fail = false -def jobStartWith = "JOBPREFIX" - -def anotherBuild -jobs.each { job -> - def jobName = job.getName() - if (jobName.startsWith(jobStartWith)) { - def lastBuild = job.getLastBuild() - if (lastBuild == null) { - try { - def future = job.scheduleBuild2(0, new Cause.UpstreamCause(build)) - println "\\tWaiting for the completion of " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) - anotherBuild = future.get() - } catch (CancellationException x) { - throw new AbortException("\${job.fullDisplayName} aborted.") - } - println HyperlinkNote.encodeTo('/' + anotherBuild.url, anotherBuild.fullDisplayName) + " completed. Result was " + anotherBuild.result - - build.result = anotherBuild.result - if (anotherBuild.result != Result.SUCCESS && anotherBuild.result != Result.UNSTABLE) { - // We abort this build right here and now. - fail = true - println("Build Failed") - } - } else { - println("\\tAlready built") - } - } -} - -if (fail){ - throw new AbortException("Some job failed") -} -""" - if (isJenkinsInstance) { - freeStyleJob("dsl-trigger-kernel") { - steps { - systemGroovyCommand(dslTriggerKernel) - } - } - - modulesBranches.each { branch -> - freeStyleJob("dsl-trigger-module-${branch}") { - steps { - systemGroovyCommand(dslTriggerModule.replaceAll("JOBPREFIX",modulesPrefix + separator + branch + separator)) - } - } - } - } -}