diff --git a/jenkins/create_jobs.groovy b/jenkins/create_jobs.groovy index 69149e396..a86587e72 100644 --- a/jenkins/create_jobs.groovy +++ b/jenkins/create_jobs.groovy @@ -101,7 +101,14 @@ def poijobs = [ ], ] +def xmlbeansjobs = [ + [ name: 'XMLBeans-DSL-1.6', jdk: '1.6', trigger: 'H */12 * * *', skipcigame: true + ] +] + def svnBase = 'https://svn.apache.org/repos/asf/poi/trunk' +def xmlbeansSvnBase = 'https://svn.apache.org/repos/asf/xmlbeans/trunk' + def defaultJdk = '1.8' def defaultTrigger = 'H/15 * * * *' // check SCM every 60/15 = 4 minutes def defaultEmail = 'dev@poi.apache.org' @@ -110,6 +117,7 @@ def defaultAnt = 'Ant 1.9.9' def defaultSlaves = '(ubuntu||beam)&&!cloud-slave&&!H15&&!H17&&!H18&&!H24&&!ubuntu-4&&!H21' def jdkMapping = [ + '1.6': 'JDK 1.6 (latest)', '1.8': 'JDK 1.8 (latest)', '1.10': 'JDK 10 (latest)', '1.11': 'JDK 11 (latest)', @@ -428,6 +436,88 @@ poijobs.each { poijob -> } } +xmlbeansjobs.each { xjob -> + def jdkKey = xjob.jdk ?: defaultJdk + def trigger = xjob.trigger ?: defaultTrigger + def email = xjob.email ?: defaultEmail + def slaves = xjob.slaves ?: defaultSlaves + (xjob.slaveAdd ?: '') + def antRT = defaultAnt + (xjob.windows ? ' (Windows)' : '') + + job(xjob.name) { + if (xjob.disabled) { + disabled() + } + + description( defaultDesc + (xjob.apicheck ? apicheckDesc : sonarDesc) ) + logRotator { + numToKeep(5) + artifactNumToKeep(1) + } + label(slaves) + environmentVariables { + env('LANG', 'en_US.UTF-8') + if(jdkKey == '1.10') { + // when using JDK 9/10 for running Ant, we need to provide more modules for the forbidden-api-checks task + // on JDK 11 and newer there is no such module any more, so do not add it here + env('ANT_OPTS', '--add-modules=java.xml.bind --add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED') + } + env('FORREST_HOME', xjob.windows ? 'f:\\jenkins\\tools\\forrest\\latest' : '/home/jenkins/tools/forrest/latest') + } + wrappers { + timeout { + absolute(180) + abortBuild() + writeDescription('Build was aborted due to timeout') + } + } + jdk(jdkMapping.get(jdkKey)) + scm { + svn(xmlbeansSvnBase) { svnNode -> + svnNode / browser(class: 'hudson.scm.browsers.ViewSVN') / + url << 'http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN' + } + } + checkoutRetryCount(3) + + triggers { + scm(trigger) + } + + def shellcmds = (xjob.windows ? shellCmdsWin : shellCmdsUnix).replace('JOBSHELL', xjob.shell ?: '') + + // Create steps and publishers depending on the type of Job that is selected + steps { + shellEx(delegate, shellcmds, xjob) + if(xjob.addShell) { + shellEx(delegate, xjob.addShell, xjob) + } + ant { + targets(['clean']) + antInstallation(antRT) + } + ant { + targets(['checkintest']) + antInstallation(antRT) + } + } + publishers { + archiveArtifacts('build/private/**') + archiveJunit('build/ooxml-test-results/*.xml,build/scratchpad-test-results/*.xml,build/test-results/*.xml,build/excelant-test-results/*.xml,build/integration-test-results/*.xml,build/*/build/test-results/test/TEST-*.xml,build/*/build/test-results/TEST-*.xml') { + testDataPublishers { + publishTestStabilityData() + } + } + + if (!xjob.skipcigame) { + configure { project -> + project / publishers << 'hudson.plugins.cigame.GamePublisher' {} + } + } + mailer(email, false, false) + } + } +} + /* Add a special job which spans a two-dimensional matrix of all JDKs that we want to use and all slaves that we would like to use and test if the java and ant binaries are available