2016-12-02 06:07:22 -05:00
// This script is used as input to the Jenkins Job DSL plugin to create all the build-jobs that
2020-08-16 06:58:54 -04:00
// Apache POI uses on the public Jenkins instance at https://ci-builds.apache.org/job/POI/
2016-12-02 06:07:22 -05:00
//
// See https://github.com/jenkinsci/job-dsl-plugin/wiki for information about the DSL, you can
2020-03-08 16:17:11 -04:00
// use https://job-dsl.herokuapp.com/ to validate the code before checkin
2020-01-07 16:15:33 -05:00
//
2016-12-01 14:09:26 -05:00
2016-12-01 15:49:29 -05:00
def triggerSundays = '' '
# only run this once per week on Sundays
H H * * 0
'' '
2016-12-01 14:09:31 -05:00
2020-02-09 03:05:16 -05:00
def xercesUrl = 'https://repo1.maven.org/maven2/xerces/xercesImpl/2.6.1/xercesImpl-2.6.1.jar'
2018-09-07 16:47:08 -04:00
def xercesLib = './xercesImpl-2.6.1.jar'
2017-07-31 18:56:08 -04:00
2016-12-01 14:09:26 -05:00
def poijobs = [
2023-03-20 16:57:35 -04:00
[ name: 'POI-DSL-1.8' , trigger: 'H */12 * * *' , jenkinsLite: true
2017-09-16 05:08:45 -04:00
] ,
2020-03-18 18:16:51 -04:00
[ name: 'POI-DSL-OpenJDK' , jdk: 'OpenJDK 1.8' , trigger: 'H */12 * * *' ,
// only a limited set of nodes still have OpenJDK 8 (on Ubuntu) installed
2020-08-16 09:06:29 -04:00
slaves: 'ubuntu' ,
2023-03-20 16:57:35 -04:00
skipcigame: true ,
2024-11-30 04:29:39 -05:00
jenkinsLite: true ,
// OpenJDK 1.8 is not available on the Apache CI any more
disabled: true
2020-03-18 18:16:51 -04:00
] ,
2022-07-30 11:07:05 -04:00
[ name: 'POI-DSL-1.11' , jdk: '1.11' , trigger: triggerSundays , skipcigame: true
2018-08-26 07:41:25 -04:00
] ,
2022-07-30 11:07:05 -04:00
[ name: 'POI-DSL-1.17' , jdk: '1.17' , trigger: 'H */12 * * *' , skipcigame: true
2021-09-23 13:03:27 -04:00
] ,
2022-10-28 16:44:08 -04:00
// Jenkins on ci-builds.apache.org does not support spotbugs with a new enough version of asm for Java18+
2023-08-05 09:43:48 -04:00
[ name: 'POI-DSL-1.18' , jdk: '1.18' , trigger: triggerSundays , skipcigame: true , skipSpotbugs: true ,
2023-08-05 09:41:30 -04:00
// let's save some CPU cycles here, 18 is not a LTS and JDK 20 is out
disabled: true
2021-11-30 01:19:53 -05:00
] ,
2022-10-28 16:44:08 -04:00
// Jenkins on ci-builds.apache.org does not support spotbugs with a new enough version of asm for Java18+
2023-12-30 06:11:26 -05:00
[ name: 'POI-DSL-1.19' , jdk: '1.19' , trigger: triggerSundays , skipcigame: true , skipSpotbugs: true ,
// let's save some CPU cycles here, 19 is not a LTS and JDK 20 is out
disabled: true
2022-07-27 08:58:33 -04:00
] ,
2022-12-21 16:52:39 -05:00
// Jenkins on ci-builds.apache.org does not support spotbugs with a new enough version of asm for Java18+
2023-12-30 06:11:26 -05:00
[ name: 'POI-DSL-1.20' , jdk: '1.20' , trigger: triggerSundays , skipcigame: true , skipSpotbugs: true ,
// let's save some CPU cycles here, 20 is not a LTS and JDK 21 is out
disabled: true
2022-12-21 16:52:39 -05:00
] ,
2023-08-12 10:53:51 -04:00
// Jenkins on ci-builds.apache.org does not support spotbugs with a new enough version of asm for Java18+
[ name: 'POI-DSL-1.21' , jdk: '1.21' , trigger: 'H */12 * * *' , skipcigame: true , skipSpotbugs: true
] ,
// Jenkins on ci-builds.apache.org does not support spotbugs with a new enough version of asm for Java18+
2024-09-15 18:31:44 -04:00
[ name: 'POI-DSL-1.22' , jdk: '1.22' , trigger: triggerSundays , skipcigame: true , skipSpotbugs: true ,
2024-09-15 18:30:35 -04:00
// issues with jacoco and Gradle and this JDK
useAnt: true
2023-08-12 10:53:51 -04:00
] ,
2023-12-30 06:11:26 -05:00
// Jenkins on ci-builds.apache.org does not support spotbugs with a new enough version of asm for Java18+
2024-02-01 01:38:54 -05:00
[ name: 'POI-DSL-1.23' , jdk: '1.23' , trigger: triggerSundays , skipcigame: true , skipSpotbugs: true ,
// use Ant for building until Gradle supports JDK 23
// see https://docs.gradle.org/current/userguide/compatibility.html
// and https://github.com/gradle/gradle/issues/26162
useAnt: true
2023-12-30 06:11:26 -05:00
] ,
2022-07-30 11:07:05 -04:00
// Use Ant-build for now as selecting IBM JDK via toolchain does not work (yet)
[ name: 'POI-DSL-IBM-JDK' , jdk: 'IBMJDK' , trigger: triggerSundays , skipcigame: true , useAnt: true
2017-09-16 05:08:45 -04:00
] ,
2022-07-30 11:07:05 -04:00
// Use Ant-build for now as passing the "additionaljar" does not work in Gradle build (yet)
[ name: 'POI-DSL-old-Xerces' , trigger: triggerSundays , skipcigame: true , useAnt: true ,
2020-02-21 17:11:26 -05:00
shell: "test -s ${xercesLib} || wget -O ${xercesLib} ${xercesUrl}\n" ,
2017-09-16 05:08:45 -04:00
// the property triggers using Xerces as XML Parser and previously showed some exception that can occur
2017-09-22 16:06:31 -04:00
properties: [ "-Dadditionaljar=${xercesLib}" ]
2017-09-16 05:08:45 -04:00
] ,
2021-09-12 17:15:25 -04:00
// [ name: 'POI-DSL-Maven', trigger: 'H */4 * * *', maven: true,
// // not needed any more now that we use Gradle for SonarQube
// disabled: true
// ],
2017-09-16 05:08:45 -04:00
[ name: 'POI-DSL-regenerate-javadoc' , trigger: triggerSundays , javadoc: true
] ,
2021-03-28 15:54:54 -04:00
// it was impossible to make this run stable in Gradle, thus disabling this for now
2022-07-30 11:07:05 -04:00
[ name: 'POI-DSL-API-Check' , trigger: '@daily' , apicheck: true , disabled: true , useAnt: true
2017-09-16 05:08:45 -04:00
] ,
2022-07-30 11:07:05 -04:00
// [ name: 'POI-DSL-Gradle', trigger: triggerSundays, email: 'centic@apache.org'
2021-09-12 17:15:25 -04:00
// ],
2022-07-30 11:07:05 -04:00
[ name: 'POI-DSL-no-scratchpad' , trigger: triggerSundays , noScratchpad: true
2017-09-16 05:08:45 -04:00
] ,
2022-07-30 11:07:05 -04:00
[ name: 'POI-DSL-saxon-test' , trigger: triggerSundays , saxonTest: true
2021-11-25 05:05:00 -05:00
] ,
2021-09-12 16:31:43 -04:00
// [ name: 'POI-DSL-SonarQube', jdk: '1.11', trigger: 'H 7 * * *', maven: true, sonar: true, skipcigame: true,
// email: 'kiwiwings@apache.org',
// // replaced by Gradle-based build now
// disabled: true
// ],
2024-01-30 16:28:48 -05:00
[ name: 'POI-DSL-SonarQube-Gradle' , jdk: '1.17' , trigger: 'H 7 * * *' , sonar: true , skipcigame: true
2017-09-16 05:08:45 -04:00
] ,
2023-03-20 16:57:35 -04:00
[ name: 'POI-DSL-Windows-1.8' , trigger: 'H */12 * * *' , windows: true , slaves: 'Windows' , jenkinsLite: true
] ,
[ name: 'POI-DSL-Windows-1.11' , jdk: '1.11' , trigger: triggerSundays , windows: true , slaves: 'Windows' ,
jenkinsLite: true
2017-09-16 05:08:45 -04:00
] ,
2022-07-30 11:07:05 -04:00
[ name: 'POI-DSL-Windows-1.17' , jdk: '1.17' , trigger: 'H */12 * * *' , windows: true , slaves: 'Windows' , skipcigame: true
2019-01-22 05:07:02 -05:00
] ,
2022-10-29 05:28:52 -04:00
[ name: 'POI-DSL-Windows-1.18' , jdk: '1.18' , trigger: triggerSundays , windows: true , slaves: 'Windows' , skipcigame: true ,
2023-08-05 09:41:30 -04:00
skipSpotbugs: true ,
2023-08-12 10:53:51 -04:00
// let's save some CPU cycles here, 18 is not an LTS and JDK 20 is out
2023-08-05 09:41:30 -04:00
disabled: true
2021-11-30 01:19:53 -05:00
] ,
2023-12-30 06:11:26 -05:00
[ name: 'POI-DSL-Windows-1.20' , jdk: '1.20' , trigger: triggerSundays , windows: true , slaves: 'Windows' , skipcigame: true ,
// let's save some CPU cycles here, 20 is not a LTS and JDK 21 is out
disabled: true
2023-08-12 10:53:51 -04:00
] ,
[ name: 'POI-DSL-Windows-1.21' , jdk: '1.21' , trigger: 'H */12 * * *' , windows: true , slaves: 'Windows' , skipcigame: true
] ,
2024-09-15 18:30:35 -04:00
[ name: 'POI-DSL-Windows-1.22' , jdk: '1.22' , trigger: triggerSundays , windows: true , slaves: 'Windows' , skipcigame: true ,
// issues with jacoco and Gradle and this JDK
useAnt: true
2023-08-12 10:53:51 -04:00
] ,
2024-02-20 16:06:41 -05:00
[ name: 'POI-DSL-Windows-1.23' , jdk: '1.23' , trigger: triggerSundays , windows: true , slaves: 'Windows' , skipcigame: true ,
// use Ant for building until Gradle supports JDK 22
// see https://docs.gradle.org/current/userguide/compatibility.html
// and https://github.com/gradle/gradle/issues/26162
useAnt: true
2023-12-30 06:11:26 -05:00
] ,
2023-03-20 16:45:02 -04:00
[ name: 'POI-DSL-Github-PullRequests' , trigger: '' , skipcigame: true , disabled: true
2018-12-28 06:17:57 -05:00
] ,
2016-12-01 14:09:26 -05:00
]
2018-10-02 04:15:41 -04:00
def xmlbeansjobs = [
2022-07-30 11:07:05 -04:00
[ name: 'POI-XMLBeans-DSL-1.8' , jdk: '1.8' , trigger: 'H */12 * * *' , skipcigame: true ,
2018-12-28 06:17:57 -05:00
] ,
2022-07-30 11:07:05 -04:00
[ name: 'POI-XMLBeans-DSL-1.11' , jdk: '1.11' , trigger: triggerSundays , skipcigame: true ,
2019-03-03 09:09:58 -05:00
] ,
2023-08-12 10:53:51 -04:00
[ name: 'POI-XMLBeans-DSL-1.17' , jdk: '1.17' , trigger: 'H */12 * * *' , skipcigame: true ,
2021-11-30 01:19:53 -05:00
] ,
2022-07-30 11:07:05 -04:00
[ name: 'POI-XMLBeans-DSL-1.18' , jdk: '1.18' , trigger: triggerSundays , skipcigame: true ,
2023-08-12 10:53:51 -04:00
// let's save some CPU cycles here, 18 is not an LTS and JDK 20 is out
2023-08-05 09:41:30 -04:00
disabled: true
2022-12-21 07:21:12 -05:00
] ,
[ name: 'POI-XMLBeans-DSL-1.19' , jdk: '1.19' , trigger: triggerSundays , skipcigame: true ,
2023-08-12 10:53:51 -04:00
// let's save some CPU cycles here, 19 is not an LTS
disabled: true
] ,
[ name: 'POI-XMLBeans-DSL-1.20' , jdk: '1.20' , trigger: triggerSundays , skipcigame: true ,
2023-12-30 06:11:26 -05:00
// let's save some CPU cycles here, 20 is not an LTS and JDK 21 is out
disabled: true
2023-08-12 10:53:51 -04:00
] ,
[ name: 'POI-XMLBeans-DSL-1.21' , jdk: '1.21' , trigger: 'H */12 * * *' , skipcigame: true ,
] ,
[ name: 'POI-XMLBeans-DSL-1.22' , jdk: '1.22' , trigger: triggerSundays , skipcigame: true ,
2022-01-08 13:22:12 -05:00
] ,
2023-12-30 06:11:26 -05:00
[ name: 'POI-XMLBeans-DSL-1.23' , jdk: '1.23' , trigger: triggerSundays , skipcigame: true ,
2023-08-05 09:41:30 -04:00
] ,
2024-02-01 01:38:51 -05:00
[ name: 'POI-XMLBeans-DSL-Sonar' , jdk: '1.17' , trigger: triggerSundays , skipcigame: true ,
2022-01-08 13:22:12 -05:00
sonar: true
2018-10-02 04:15:41 -04:00
]
]
2016-12-08 04:36:48 -05:00
def svnBase = 'https://svn.apache.org/repos/asf/poi/trunk'
2018-10-02 04:15:41 -04:00
def xmlbeansSvnBase = 'https://svn.apache.org/repos/asf/xmlbeans/trunk'
2017-09-16 09:06:59 -04:00
def defaultJdk = '1.8'
2016-12-31 04:43:13 -05:00
def defaultTrigger = 'H/15 * * * *' // check SCM every 60/15 = 4 minutes
2016-12-01 14:09:31 -05:00
def defaultEmail = 'dev@poi.apache.org'
2020-10-19 18:02:00 -04:00
def defaultAnt = 'ant_1.10_latest'
def defaultAntWindows = 'ant_1.10_latest_windows'
def defaultMaven = 'maven_3_latest'
2020-08-16 09:06:29 -04:00
// H29 seems to have very little memory
def defaultSlaves = '(ubuntu)&&!beam&&!cloud-slave&&!H29'
2016-12-01 14:09:26 -05:00
def jdkMapping = [
2023-03-20 16:57:35 -04:00
'1.8' : [ jenkinsJdk: 'jdk_1.8_latest' , jdkVersion: 8 , jdkVendor: '' ] ,
2022-09-30 10:12:10 -04:00
'1.11' : [ jenkinsJdk: 'jdk_11_latest' , jdkVersion: 11 , jdkVendor: '' ] ,
2022-02-21 17:57:03 -05:00
'1.17' : [ jenkinsJdk: 'jdk_17_latest' , jdkVersion: 17 , jdkVendor: '' ] ,
'1.18' : [ jenkinsJdk: 'jdk_18_latest' , jdkVersion: 18 , jdkVendor: '' ] ,
2022-07-27 08:55:10 -04:00
'1.19' : [ jenkinsJdk: 'jdk_19_latest' , jdkVersion: 19 , jdkVendor: '' ] ,
2022-12-21 16:52:39 -05:00
'1.20' : [ jenkinsJdk: 'jdk_20_latest' , jdkVersion: 20 , jdkVendor: '' ] ,
2023-08-05 10:15:21 -04:00
'1.21' : [ jenkinsJdk: 'jdk_21_latest' , jdkVersion: 21 , jdkVendor: '' ] ,
2023-08-12 10:53:51 -04:00
'1.22' : [ jenkinsJdk: 'jdk_22_latest' , jdkVersion: 22 , jdkVendor: '' ] ,
2023-12-30 06:11:26 -05:00
'1.23' : [ jenkinsJdk: 'jdk_23_latest' , jdkVersion: 23 , jdkVendor: '' ] ,
2022-02-21 17:57:03 -05:00
'OpenJDK 1.8' : [ jenkinsJdk: 'adoptopenjdk_hotspot_8u282' , jdkVersion: 8 , jdkVendor: 'adoptopenjdk' ] ,
'IBMJDK' : [ jenkinsJdk: 'ibmjdk_1.8.0_261' , jdkVersion: 8 , jdkVendor: 'ibm' ]
2016-12-01 14:09:26 -05:00
]
2017-09-16 05:08:45 -04:00
static def shellEx ( def context , String cmd , def poijob ) {
if ( poijob . windows ) {
context . batchFile ( cmd )
} else {
context . shell ( cmd )
}
2017-07-31 14:21:48 -04:00
}
2017-07-31 18:56:08 -04:00
def defaultDesc = '' '
2018-09-28 13:43:07 -04:00
< img src = "https://poi.apache.org/images/project-header.png" / >
2016-12-01 15:49:29 -05:00
< p >
Apache POI - the Java API for Microsoft Documents
< / p >
< p >
2016-12-30 17:12:14 -05:00
< b > This is an automatically generated Job Config , do not edit it here !
2017-01-30 17:05:29 -05:00
Instead change the Jenkins Job DSL at < a href = "https://svn.apache.org/repos/asf/poi/trunk/jenkins" > https: //svn.apache.org/repos/asf/poi/trunk/jenkins</a>,
2016-12-30 17:12:14 -05:00
see < a href = "https://github.com/jenkinsci/job-dsl-plugin/wiki" > https: //github.com/jenkinsci/job-dsl-plugin/wiki</a>
for more details about the DSL . < / b >
2016-12-03 14:50:28 -05:00
< / p > '' '
2017-07-31 18:56:08 -04:00
def apicheckDesc = '' '
2016-12-03 14:50:28 -05:00
< p >
2019-11-13 12:18:15 -05:00
< b > < a href = "https://sonarcloud.io/dashboard?id=poi-parent" target = "_blank" > Sonar reports < /a></ b > -
2016-12-30 17:12:14 -05:00
< p >
2021-04-08 16:10:53 -04:00
< b > < a href = "lastSuccessfulBuild/artifact/build/poi/build/reports/japi.html" > API Check POI < /a></ b >
< b > < a href = "lastSuccessfulBuild/artifact/build/poi-ooxml/build/reports/japi.html" > API Check POI - OOXML < /a></ b >
< b > < a href = "lastSuccessfulBuild/artifact/build/poi-excelant/build/reports/japi.html" > API Check POI - Excelant < /a></ b >
< b > < a href = "lastSuccessfulBuild/artifact/build/poi-scratchpad/build/reports/japi.html" > API Check POI - Scratchpad < /a></ b >
2016-12-30 17:12:14 -05:00
2016-12-01 15:49:29 -05:00
< / p >
2016-12-03 14:50:28 -05:00
'' '
2017-07-31 18:56:08 -04:00
def sonarDesc = '' '
2016-12-01 15:49:29 -05:00
< p >
2023-01-01 10:59:16 -05:00
< b > < a href = "lastSuccessfulBuild/spotbugs/" target = "_blank" > Spotbugs report of latest build < /a></ b > -
2019-11-13 12:18:15 -05:00
< b > < a href = "https://sonarcloud.io/dashboard?id=poi-parent" target = "_blank" > Sonar reports < /a></ b > -
2022-12-30 03:11:43 -05:00
< b > < a href = "lastSuccessfulBuild/jacoco/" target = "_blank" > Coverage of latest build < /a></ b >
2016-12-01 15:49:29 -05:00
< / p >
2017-07-31 18:56:08 -04:00
'' '
def shellCmdsUnix =
2021-04-26 11:12:15 -04:00
'' ' # remove some outdated directories that should not be there any more
rm - rf examples excelant integrationtest main ooxml ooxml - schema scratchpad build . javacheck . xml
# show which files are currently modified in the working copy
2019-04-13 09:06:43 -04:00
svn status | | true
2022-03-24 00:42:27 -04:00
# make sure no changed module - class - files or ooxml - lite - report - files are lingering on
2021-05-23 15:15:29 -04:00
svn revert poi * /src/ * /java9/ module - info . * | | true
2022-03-24 00:42:27 -04:00
svn revert src /resources/ ooxml - lite - report . * | | true
2017-07-31 18:56:08 -04:00
# print out information about which exact version of java we are using
echo Java - Home: $JAVA_HOME
ls - al $JAVA_HOME /
2017-10-09 15:35:43 -04:00
ls - al $JAVA_HOME / bin
2017-07-31 18:56:08 -04:00
$JAVA_HOME /bin/ java - version
2017-10-09 15:35:43 -04:00
echo which java
which java
java - version
echo which javac
which javac
javac - version
2019-03-03 09:09:58 -05:00
echo Ant - Home: $ANT_HOME
ls - al $ANT_HOME
echo which ant
2019-04-22 15:32:07 -04:00
which ant | | true
2019-03-03 09:09:58 -05:00
ant - version
2017-10-09 15:35:43 -04:00
echo '<project default="test"><target name="test"><echo>Java ${ant.java.version}/${java.version}</echo><exec executable="javac"><arg value="-version"/></exec></target></project>' > build . javacheck . xml
ant - f build . javacheck . xml - v
2017-07-31 18:56:08 -04:00
POIJOBSHELL
# ignore any error message
exit 0 '' '
def shellCmdsWin =
2017-09-16 05:08:45 -04:00
'' ' @echo off
2017-07-31 18:56:08 -04:00
: : show which files are currently modified in the working copy
svn status
2021-05-15 03:20:46 -04:00
: : make sure no changed module - class - files are lingering on
2021-05-23 15:15:29 -04:00
svn revert poi * \ \ src \ \ * \ \ java9 \ \ module - info . *
2022-12-30 03:11:41 -05:00
: : also revert some files directly as the wildcard - based revert seems to fail sometimes
svn revert poi \ \ src \ \ main \ \ java9 \ \ module - info . class poi \ \ src \ \ test \ \ java9 \ \ module - info . class poi - examples \ \ src \ \ main \ \ java9 \ \ module - info . class poi - excelant \ \ src \ \ main \ \ java9 \ \ module - info . class poi - excelant \ \ src \ \ test \ \ java9 \ \ module - info . class poi - integration \ \ src \ \ test \ \ java9 \ \ module - info . class poi - ooxml \ \ src \ \ main \ \ java9 \ \ module - info . class poi - ooxml \ \ src \ \ test \ \ java9 \ \ module - info . class poi - ooxml - full \ \ src \ \ main \ \ java9 \ \ module - info . class poi - ooxml - lite \ \ src \ \ main \ \ java9 \ \ module - info . class poi - ooxml - lite \ \ src \ \ main \ \ java9 \ \ module - info . java poi - ooxml - lite - agent \ \ src \ \ main \ \ java9 \ \ module - info . class poi - scratchpad \ \ src \ \ main \ \ java9 \ \ module - info . class poi - scratchpad \ \ src \ \ test \ \ java9 \ \ module - info . class src \ \ resources \ \ ooxml - lite - report . clazz src \ \ resources \ \ ooxml - lite - report . xsb
2017-07-31 18:56:08 -04:00
: : print out information about which exact version of java we are using
echo Java - Home: % JAVA_HOME %
dir "%JAVA_HOME:\\\\=\\%"
"%JAVA_HOME%/bin/java" - version
POIJOBSHELL
: : ignore any error message
exit / b 0 '' '
poijobs . each { poijob - >
def jdkKey = poijob . jdk ? : defaultJdk
def trigger = poijob . trigger ? : defaultTrigger
def email = poijob . email ? : defaultEmail
def slaves = poijob . slaves ? : defaultSlaves + ( poijob . slaveAdd ? : '' )
2019-04-22 14:48:35 -04:00
def antRT = poijob . windows ? defaultAntWindows : defaultAnt
2017-07-31 18:56:08 -04:00
2020-08-16 05:51:23 -04:00
job ( 'POI/' + poijob . name ) {
2017-07-31 18:56:08 -04:00
if ( poijob . disabled ) {
disabled ( )
}
description ( defaultDesc + ( poijob . apicheck ? apicheckDesc : sonarDesc ) )
2016-12-30 17:12:14 -05:00
logRotator {
numToKeep ( 5 )
artifactNumToKeep ( 1 )
}
label ( slaves )
environmentVariables {
env ( 'LANG' , 'en_US.UTF-8' )
2021-11-07 09:59:48 -05:00
env ( 'CI_BUILD' , 'TRUE' )
2018-07-19 18:55:51 -04:00
env ( 'FORREST_HOME' , poijob . windows ? 'f:\\jenkins\\tools\\forrest\\latest' : '/home/jenkins/tools/forrest/latest' )
2016-12-30 17:12:14 -05:00
}
2020-08-16 05:51:23 -04:00
2016-12-30 17:12:14 -05:00
wrappers {
timeout {
2021-11-30 01:19:56 -05:00
absolute ( 300 )
2016-12-30 17:12:14 -05:00
abortBuild ( )
writeDescription ( 'Build was aborted due to timeout' )
2018-05-28 15:43:19 -04:00
}
preBuildCleanup {
2020-06-20 12:31:10 -04:00
/* remove xmlbeans while 4.0 is not stable */
includePattern ( '**/lib/ooxml/xmlbeans*.jar' )
2020-06-20 01:27:08 -04:00
includePattern ( '**/lib/ooxml/ooxml*.jar' )
2020-12-13 13:11:48 -05:00
/* remove ooxml-schemas while the builds migrate to 5th edition */
includePattern ( 'build/xmlbean-*/**' )
2021-03-27 19:16:45 -04:00
/* remove remaining src debris */
includePattern ( 'src/*/build/**' )
2018-05-28 15:43:19 -04:00
}
2016-12-30 17:12:14 -05:00
if ( poijob . sonar ) {
2019-11-12 19:00:26 -05:00
credentialsBinding {
string ( 'POI_SONAR_TOKEN' , 'sonarcloud-poi' )
}
2016-12-30 17:12:14 -05:00
configure { project - >
project / buildWrappers < < 'hudson.plugins.sonar.SonarBuildWrapper' { }
2016-12-30 15:35:13 -05:00
}
2016-12-01 15:49:29 -05:00
}
2016-12-30 17:12:14 -05:00
}
2022-02-21 17:57:03 -05:00
jdk ( jdkMapping . get ( jdkKey ) . jenkinsJdk )
2016-12-30 17:12:14 -05:00
scm {
2023-03-20 16:45:02 -04:00
svn ( svnBase ) { svnNode - >
svnNode / browser(class: 'hudson.scm.browsers.ViewSVN') /
url < < 'https://svn.apache.org/viewcvs.cgi/?root=Apache-SVN'
2017-09-16 05:08:45 -04:00
}
2016-12-30 17:12:14 -05:00
}
2017-09-16 05:08:45 -04:00
checkoutRetryCount ( 3 )
2023-03-20 16:45:02 -04:00
triggers {
scm ( trigger )
2016-12-30 17:12:14 -05:00
}
2017-07-31 18:56:08 -04:00
def shellcmds = ( poijob . windows ? shellCmdsWin : shellCmdsUnix ) . replace ( 'POIJOBSHELL' , poijob . shell ? : '' )
2016-12-30 17:12:14 -05:00
// Create steps and publishers depending on the type of Job that is selected
2021-09-12 16:31:43 -04:00
if ( poijob . javadoc ) {
2016-12-30 17:12:14 -05:00
steps {
2017-07-31 14:21:48 -04:00
shellEx ( delegate , shellcmds , poijob )
2016-12-30 17:12:14 -05:00
ant {
targets ( [ 'clean' , 'javadocs' ] + ( poijob . properties ? : [ ] ) )
prop ( 'coverage.enabled' , true )
// Properties did not work, so I had to use targets instead
//properties(poijob.properties ?: '')
2017-07-31 11:29:28 -04:00
antInstallation ( antRT )
2016-12-30 17:12:14 -05:00
}
2018-07-19 17:49:49 -04:00
shellEx ( delegate , 'zip -r build/javadocs.zip build/site/apidocs' , poijob )
2016-12-01 15:49:29 -05:00
}
2016-12-30 17:12:14 -05:00
publishers {
if ( ! poijob . skipcigame ) {
configure { project - >
2017-03-10 15:13:46 -05:00
project / publishers < < 'hudson.plugins.cigame.GamePublisher' { }
}
}
mailer ( email , false , false )
}
} else if ( poijob . sonar ) {
steps {
2019-11-12 19:00:26 -05:00
shellEx ( delegate , shellcmds , poijob )
2019-11-12 18:30:01 -05:00
2019-11-12 19:00:26 -05:00
gradle {
switches ( '-PenableSonar' )
2024-02-20 16:09:44 -05:00
switches ( '-Dsonar.token=${POI_SONAR_TOKEN}' )
2020-10-25 12:07:58 -04:00
switches ( '-Dsonar.organization=apache' )
2020-10-25 15:29:46 -04:00
switches ( '-Dsonar.projectKey=poi-parent' )
2020-12-25 14:19:32 -05:00
switches ( '-Dsonar.host.url=https://sonarcloud.io' )
2022-02-21 18:10:45 -05:00
switches ( "-PjdkVersion=${jdkMapping.get(jdkKey).jdkVersion}" )
2022-02-21 17:57:03 -05:00
if ( jdkMapping . get ( jdkKey ) . jdkVendor ! = '' ) {
2022-02-21 18:10:45 -05:00
switches ( "-PjdkVendor=${jdkMapping.get(jdkKey).jdkVendor}" )
2022-02-21 17:57:03 -05:00
}
2021-09-14 17:33:56 -04:00
tasks ( 'clean' )
2020-10-25 15:30:00 -04:00
tasks ( 'check' )
2020-10-25 15:30:14 -04:00
tasks ( 'jacocoTestReport' )
2024-02-20 16:09:44 -05:00
tasks ( 'sonar' )
2021-04-06 16:23:44 -04:00
useWrapper ( true )
2017-03-10 15:13:46 -05:00
}
}
publishers {
2023-03-20 16:34:27 -04:00
// in archive, junit and jacoco publishers, matches beneath build/*/build/... are for Gradle-build results
archiveArtifacts ( 'build/dist/*.tar.gz,*/build/reports/**,poi-integration/build/test-results/**,*/build/libs/*.jar' )
archiveJunit ( '*/build/test-results/**/TEST-*.xml' ) {
testDataPublishers {
publishTestStabilityData ( )
}
}
jacocoCodeCoverage {
classPattern ( '*/build/classes' )
execPattern ( '*/build/*.exec,*/build/jacoco/*.exec' )
sourcePattern ( '*/src/main/java' )
exclusionPattern ( 'com/microsoft/**,org/openxmlformats/**,org/etsi/**,org/w3/**,schemaorg*/**,schemasMicrosoft*/**,org/apache/poi/hdf/model/hdftypes/definitions/*.class,org/apache/poi/hwpf/model/types/*.class,org/apache/poi/hssf/usermodel/DummyGraphics2d.class,org/apache/poi/sl/draw/binding/*.class' )
}
if ( ! poijob . skipcigame ) {
2017-03-10 15:13:46 -05:00
configure { project - >
2016-12-30 17:12:14 -05:00
project / publishers < < 'hudson.plugins.cigame.GamePublisher' { }
2016-12-01 15:49:29 -05:00
}
}
2016-12-30 17:12:14 -05:00
mailer ( email , false , false )
}
} else {
steps {
2017-07-31 14:21:48 -04:00
shellEx ( delegate , shellcmds , poijob )
2016-12-30 17:12:14 -05:00
if ( poijob . addShell ) {
2017-07-31 14:21:48 -04:00
shellEx ( delegate , poijob . addShell , poijob )
2016-12-30 17:12:14 -05:00
}
// For Jobs that should still have the default set of publishers we can configure different steps here
2022-07-30 11:07:05 -04:00
if ( ! poijob . useAnt ) {
2021-08-20 16:53:13 -04:00
if ( ! poijob . windows ) {
// Gradle will not run any tests if the code is up-to-date, therefore manually mark the files as updated
shellEx ( delegate , 'touch --no-create build/*/build/test-results/TEST-*.xml build/*/build/test-results/test/TEST-*.xml' , poijob )
}
2021-04-06 16:42:32 -04:00
2016-12-30 17:12:14 -05:00
gradle {
2023-03-20 16:57:35 -04:00
if ( poijob . jenkinsLite ) {
tasks ( 'clean jenkinsLite' )
} else {
tasks ( 'clean jenkins' )
}
2021-04-06 16:23:44 -04:00
useWrapper ( true )
2021-09-01 18:32:48 -04:00
if ( poijob . noScratchpad ) {
switches ( '-Pscratchpad.ignore=true' )
}
2021-11-25 05:05:00 -05:00
if ( poijob . saxonTest ) {
switches ( '-Psaxon.test=true' )
}
2022-02-21 18:10:45 -05:00
switches ( "-PjdkVersion=${jdkMapping.get(jdkKey).jdkVersion}" )
2022-02-21 17:57:03 -05:00
if ( jdkMapping . get ( jdkKey ) . jdkVendor ! = '' ) {
2022-02-21 18:10:45 -05:00
switches ( "-PjdkVendor=${jdkMapping.get(jdkKey).jdkVendor}" )
2022-02-21 17:57:03 -05:00
}
2022-08-29 20:34:13 -04:00
switches ( "--refresh-dependencies" )
2016-12-30 17:12:14 -05:00
}
} else {
ant {
targets ( [ 'clean' , 'jenkins' ] + ( poijob . properties ? : [ ] ) )
2022-12-22 05:59:41 -05:00
prop ( 'coverage.enabled' , ! poijob . skipSpotbugs )
2016-12-01 15:49:29 -05:00
// Properties did not work, so I had to use targets instead
//properties(poijob.properties ?: '')
2017-07-31 11:29:28 -04:00
antInstallation ( antRT )
2016-12-01 15:49:29 -05:00
}
2022-12-30 03:11:30 -05:00
if ( ! poijob . skipSourceBuild ) {
ant {
targets ( [ 'run' ] + ( poijob . properties ? : [ ] ) )
buildFile ( 'poi-integration/build.xml' )
// Properties did not work, so I had to use targets instead
//properties(poijob.properties ?: '')
antInstallation ( antRT )
}
2016-12-01 15:49:29 -05:00
}
}
2016-12-30 17:12:14 -05:00
}
publishers {
2022-10-28 16:44:08 -04:00
if ( ! poijob . skipSpotbugs ) {
recordIssues {
tools {
spotBugs {
pattern ( '*/build/reports/spotbugs/*.xml' )
reportEncoding ( 'UTF-8' )
}
2020-08-15 13:09:04 -04:00
}
}
2016-12-01 16:08:22 -05:00
}
2016-12-30 17:12:14 -05:00
// in archive, junit and jacoco publishers, matches beneath build/*/build/... are for Gradle-build results
2023-11-20 14:16:43 -05:00
archiveArtifacts ( 'build/dist/*.zip,build/dist/*.tgz,build/dist/maven/*/*.jar,build/dist/maven/*/*.pom,build/dist/maven/*/*.asc,build/dist/maven/*/*.sha256,build/dist/maven/*/*.sha512,build/coverage/**,*/build/reports/*.bom.*,build/hs_err*.log' )
2022-12-30 03:11:43 -05:00
/ * this plugin is currently missing on the Apache Jenkins instance
2016-12-30 17:12:14 -05:00
warnings ( [ 'Java Compiler (javac)' , 'JavaDoc Tool' ] , null ) {
resolveRelativePaths ( )
2022-12-30 03:11:43 -05:00
} * /
2021-04-07 01:33:18 -04:00
archiveJunit ( '*/build/test-results/**/TEST-*.xml' ) {
2016-12-30 17:12:14 -05:00
testDataPublishers {
publishTestStabilityData ( )
2016-12-01 16:08:22 -05:00
}
2016-12-01 15:49:29 -05:00
}
2022-10-28 19:01:47 -04:00
if ( ! poijob . skipSpotbugs ) {
jacocoCodeCoverage {
classPattern ( '*/build/classes' )
execPattern ( '*/build/*.exec,*/build/jacoco/*.exec' )
sourcePattern ( '*/src/main/java' )
exclusionPattern ( 'com/microsoft/**,org/openxmlformats/**,org/etsi/**,org/w3/**,schemaorg*/**,schemasMicrosoft*/**,org/apache/poi/hdf/model/hdftypes/definitions/*.class,org/apache/poi/hwpf/model/types/*.class,org/apache/poi/hssf/usermodel/DummyGraphics2d.class,org/apache/poi/sl/draw/binding/*.class' )
}
2016-12-30 17:12:14 -05:00
}
2016-12-02 07:52:05 -05:00
2016-12-30 17:12:14 -05:00
if ( ! poijob . skipcigame ) {
configure { project - >
project / publishers < < 'hudson.plugins.cigame.GamePublisher' { }
2016-12-01 15:49:29 -05:00
}
}
2016-12-30 17:12:14 -05:00
mailer ( email , false , false )
2016-12-01 15:49:29 -05:00
}
}
2020-08-16 05:51:23 -04:00
2016-12-01 15:49:29 -05:00
}
2016-11-27 06:06:48 -05:00
}
2017-05-04 04:40:12 -04:00
2018-10-02 04:15:41 -04:00
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 ? : '' )
2019-04-22 14:48:35 -04:00
def antRT = xjob . windows ? defaultAntWindows : defaultAnt
2018-10-02 04:15:41 -04:00
2020-08-16 05:51:23 -04:00
job ( 'POI/' + xjob . name ) {
2018-10-02 04:15:41 -04:00
if ( xjob . disabled ) {
disabled ( )
}
2022-01-08 13:22:12 -05:00
description ( defaultDesc + ( xjob . apicheck ? apicheckDesc : sonarDesc . replace ( 'poi-parent' , 'apache_xmlbeans' ) ) )
2018-10-02 04:15:41 -04:00
logRotator {
numToKeep ( 5 )
artifactNumToKeep ( 1 )
}
label ( slaves )
environmentVariables {
env ( 'LANG' , 'en_US.UTF-8' )
2024-02-01 01:38:49 -05:00
if ( jdkKey = = '1.11' | | jdkKey = = '1.17'
2023-05-21 08:01:18 -04:00
| | jdkKey = = '1.18' | | jdkKey = = '1.19' | | jdkKey = = '1.20' | | jdkKey = = '1.21' ) {
2019-03-03 09:09:58 -05:00
env ( 'ANT_OPTS' , '--add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED' )
2018-10-02 04:15:41 -04:00
}
2019-03-03 09:09:58 -05:00
// will be needed for forbidden-apis-check: env('ANT_HOME', xjob.windows ? 'f:\\jenkins\\tools\\ant\\latest' : '/usr/share/ant')
2018-10-02 04:15:41 -04:00
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' )
}
2022-01-08 13:22:12 -05:00
if ( xjob . sonar ) {
credentialsBinding {
string ( 'POI_SONAR_TOKEN' , 'sonarcloud-poi' )
}
configure { project - >
project / buildWrappers < < 'hudson.plugins.sonar.SonarBuildWrapper' { }
}
}
2018-10-02 04:15:41 -04:00
}
2022-02-21 17:57:03 -05:00
jdk ( jdkMapping . get ( jdkKey ) . jenkinsJdk )
2018-10-02 04:15:41 -04:00
scm {
svn ( xmlbeansSvnBase ) { svnNode - >
svnNode / browser(class: 'hudson.scm.browsers.ViewSVN') /
2020-03-08 16:17:11 -04:00
url < < 'https://svn.apache.org/viewcvs.cgi/?root=Apache-SVN'
2018-10-02 04:15:41 -04:00
}
}
checkoutRetryCount ( 3 )
triggers {
scm ( trigger )
}
2018-10-02 10:55:09 -04:00
def shellcmds = ( xjob . windows ? shellCmdsWin : shellCmdsUnix ) . replace ( 'POIJOBSHELL' , xjob . shell ? : '' )
2018-10-02 04:15:41 -04:00
// 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 )
}
2021-12-30 19:17:57 -05:00
gradle {
2022-01-08 13:22:12 -05:00
if ( xjob . sonar ) {
switches ( '-PenableSonar' )
2024-02-20 16:09:44 -05:00
switches ( '-Dsonar.token=${POI_SONAR_TOKEN}' )
2022-01-08 13:22:12 -05:00
switches ( '-Dsonar.organization=apache' )
switches ( '-Dsonar.projectKey=apache_xmlbeans' )
switches ( '-Dsonar.host.url=https://sonarcloud.io' )
2022-02-21 18:10:45 -05:00
switches ( "-PjdkVersion=${jdkMapping.get(jdkKey).jdkVersion}" )
2022-02-21 17:57:03 -05:00
if ( jdkMapping . get ( jdkKey ) . jdkVendor ! = '' ) {
2022-02-21 18:10:45 -05:00
switches ( "-PjdkVendor=${jdkMapping.get(jdkKey).jdkVendor}" )
2022-02-21 17:57:03 -05:00
}
2022-01-08 13:22:12 -05:00
}
2021-12-30 19:17:57 -05:00
tasks ( 'clean' )
tasks ( 'jenkins' )
tasks ( 'jacocoTestReport' )
2022-01-08 13:22:12 -05:00
if ( xjob . sonar ) {
2024-02-20 16:09:44 -05:00
tasks ( 'sonar' )
2022-01-08 13:22:12 -05:00
}
2021-12-30 19:17:57 -05:00
useWrapper ( true )
2018-10-02 18:36:25 -04:00
}
2018-10-02 04:15:41 -04:00
}
publishers {
2022-12-21 07:17:59 -05:00
archiveArtifacts ( 'build/libs/xmlbeans*.jar,build/distributions/*,build/reports/*.bom.*,build/hs_err*.log' )
2018-10-02 04:15:41 -04:00
2022-12-30 03:11:43 -05:00
/ * this plugin is currently missing on the Apache Jenkins instance
2019-03-03 09:09:58 -05:00
warnings ( [ 'Java Compiler (javac)' , 'JavaDoc Tool' ] , null ) {
resolveRelativePaths ( )
2022-12-30 03:11:43 -05:00
} * /
2021-12-30 19:17:57 -05:00
archiveJunit ( 'build/test-results/test/TEST-*.xml' ) {
2019-03-03 09:09:58 -05:00
testDataPublishers {
publishTestStabilityData ( )
}
}
2020-08-18 17:04:17 -04:00
recordIssues {
tools {
spotBugs {
2021-12-30 19:17:57 -05:00
pattern ( 'build/reports/spotbugs/*/spotbugs.xml' )
2020-08-18 17:04:17 -04:00
reportEncoding ( 'UTF-8' )
}
}
}
2019-03-03 09:09:58 -05:00
2018-10-02 04:15:41 -04:00
if ( ! xjob . skipcigame ) {
configure { project - >
project / publishers < < 'hudson.plugins.cigame.GamePublisher' { }
}
}
mailer ( email , false , false )
}
}
}
2017-09-17 07:07:21 -04:00
/ *
Add a special job which spans a two - dimensional matrix of all JDKs that we want to use and
2020-12-15 18:04:14 -05:00
all worker nodes that we would like to use and test if the java and ant binaries are available
2017-09-17 07:07:21 -04:00
on that machine correctly .
* /
2020-08-16 05:51:23 -04:00
matrixJob ( 'POI/POI-DSL-Test-Environment' ) {
2017-09-16 05:08:45 -04:00
description (
2020-08-16 05:51:23 -04:00
'' ' Check installed version of Java / Ant on all build - nodes
2017-09-16 05:08:45 -04:00
This job is used to verify which machines actually have the required programs installed .
2018-11-16 17:28:23 -05:00
Unfortunately we often see builds break because of changes / new machines . . . '' ' )
2017-09-16 05:08:45 -04:00
/ * throttleConcurrentBuilds {
maxPerNode ( 1 )
maxTotal ( 1 )
} * /
logRotator {
2018-11-16 17:28:23 -05:00
numToKeep ( 1 )
2017-09-16 05:08:45 -04:00
artifactNumToKeep ( 1 )
}
axes {
jdk (
2020-10-25 05:24:01 -04:00
'jdk_1.8_latest' ,
'jdk_11_latest' ,
2021-10-01 06:45:15 -04:00
'jdk_17_latest' ,
2021-11-30 01:19:53 -05:00
'jdk_18_latest' ,
2022-07-27 08:39:19 -04:00
'jdk_19_latest' ,
2023-08-10 00:37:47 -04:00
'jdk_20_latest' ,
'jdk_21_latest' ,
2023-08-12 10:53:54 -04:00
'jdk_22_latest' ,
2023-12-30 06:11:26 -05:00
'jdk_23_latest' ,
2021-08-16 18:17:05 -04:00
'adoptopenjdk_hotspot_8u282' ,
2020-10-25 05:24:01 -04:00
'ibmjdk_1.8.0_261'
2017-09-16 05:08:45 -04:00
)
2023-06-27 07:48:38 -04:00
// Note H50 is reserved according to its node-description
2023-08-12 10:53:54 -04:00
label ( 'Nodes' , 'builds22' , 'builds23' , 'builds24' , 'builds25' , 'builds26' , 'builds27' , 'builds28' , 'builds29' , 'builds30' , 'builds31' , 'builds32' , 'builds33' , 'builds34' , 'builds35' , 'builds36' , 'builds37' , 'builds38' , 'builds39' , 'builds40' , 'builds50' , 'builds56' , 'builds57' , 'builds58' , 'builds59' , 'builds60' )
2017-09-16 05:08:45 -04:00
}
steps {
2018-11-16 17:28:23 -05:00
conditionalSteps {
condition {
2023-03-20 16:34:27 -04:00
fileExists ( '/usr' , BaseDir . WORKSPACE )
}
runner ( 'DontRun' )
steps {
shell (
'' ' which svn | | true
2019-04-13 03:41:21 -04:00
which javac
2017-09-16 05:08:45 -04:00
javac - version
echo '<?xml version="1.0"?><project name="POI Build" default="test"><target name="test"><echo>Using Ant: ${ant.version} from ${ant.home}</echo></target></project>' > build . xml
'' ' )
2023-03-20 16:34:27 -04:00
ant {
antInstallation ( defaultAnt )
}
2017-09-16 05:08:45 -04:00
2023-03-20 16:34:27 -04:00
shell (
'' ' which mvn | | true
2019-10-26 02:35:15 -04:00
mvn - version | | true
2019-10-26 14:17:38 -04:00
echo '<project><modelVersion>4.0.0</modelVersion><groupId>org.apache.poi</groupId><artifactId>build-tst</artifactId><version>1.0.0</version></project>' > pom . xml
2019-10-26 01:37:32 -04:00
'' ' )
2023-03-20 16:34:27 -04:00
maven {
goals ( 'package' )
mavenInstallation ( defaultMaven )
}
}
2018-11-16 17:28:23 -05:00
}
conditionalSteps {
condition {
2023-03-20 16:34:27 -04:00
fileExists ( 'c:\\windows' , BaseDir . WORKSPACE )
}
runner ( 'DontRun' )
steps {
batchFile (
'' ' @echo off
2018-11-16 17:28:23 -05:00
echo .
where javac . exe
echo .
javac - version
echo .
2019-01-27 16:17:01 -05:00
echo ^ < ? xml version = ^ "1.0^" ? ^ > ^ < project name = ^ "POI Build^" default = ^ "test^" ^ > ^ < target name = ^ "test^" ^ > ^ < echo ^ > Using Ant: $ { ant . version } from $ { ant . home } , ant detected Java $ { ant . java . version } ( may be different than actual Java sometimes . . . ) , using Java: $ { java . version } /${java.runtime.version}/ $ { java . vm . version } /${java.vm.name} from ${java.vm.vendor} on ${os.name}: ${os.version}^</ echo ^ > ^ < /target^>^</ project ^ > > build . xml
2018-11-16 17:28:23 -05:00
'' ' )
2023-03-20 16:34:27 -04:00
ant {
antInstallation ( defaultAntWindows )
}
}
2018-11-16 17:28:23 -05:00
}
2017-09-16 05:08:45 -04:00
}
}
2017-05-04 04:52:44 -04:00
/* I tried to put the view into a sub-folder/ sub - view , but failed , there are multiple related
plugins so this is all a bit confusing : ( , see also https: //issues.apache.org/jira/browse/INFRA-14002
2017-05-04 04:40:12 -04:00
dashboardView ( "P/POI-new" ) {
columns {
status ( )
weather ( )
configureProject ( )
buildButton ( )
cronTrigger ( )
lastBuildConsole ( )
name ( )
lastSuccess ( )
lastFailure ( )
lastDuration ( )
//lastSuccessDescription()
jacoco ( )
}
2018-10-26 05:32:13 -04:00
description ( "<table>\n" +
" <tr>\n" +
" <td><img src=\"https://poi.apache.org/images/project-header.png\" /></td>\n" +
" <td> \n" +
" <p>Apache POI - the Java API for Microsoft Documents</p>\n" +
" <p><b>Most of the POI Jobs are automatically generated by Jenkins Job DSL\n" +
" at <a href=\"https://svn.apache.org/repos/asf/poi/trunk/jenkins\">https://svn.apache.org/repos/asf/poi/trunk/jenkins</a>,<br/>\n" +
" see <a href=\"https://github.com/jenkinsci/job-dsl-plugin/wiki\">https://github.com/jenkinsci/job-dsl-plugin/wiki</a>\n" +
" for more details about the DSL.</b>\n" +
" </p>\n" +
" <p>\n" +
" <b><a href=\"job/POI-DSL-1.8/lastSuccessfulBuild/findbugsResult/\" target=\"_blank\">Findbugs report of latest build</a></b> -\n" +
2019-11-13 12:18:15 -05:00
" <b><a href=\"https://sonarcloud.io/dashboard?id=poi-parent\" target=\"_blank\">Sonar reports</a></b> -\n" +
2018-10-26 05:32:13 -04:00
" <b><a href=\"job/POI-DSL-1.8/lastSuccessfulBuild/artifact/build/coverage/index.html\" target=\"_blank\">Coverage of latest build</a></b>\n" +
" </p>\n" +
" </td>\n" +
" </tr>\n" +
"</table>" )
2017-05-04 04:52:44 -04:00
filterBuildQueue ( false )
2017-05-04 04:40:12 -04:00
filterExecutors ( false )
// Job selection
2017-05-04 04:52:44 -04:00
jobs { * /
2017-09-16 05:08:45 -04:00
//regex(/.*POI.*/)
/ * }
2017-05-04 04:40:12 -04:00
2017-09-16 05:08:45 -04:00
// Layout
topPortlets {
jenkinsJobsList {
displayName ( 'POI jobs' )
2017-05-04 04:40:12 -04:00
}
2017-09-16 05:08:45 -04:00
}
leftPortlets {
testStatisticsChart ( )
}
rightPortlets {
testTrendChart ( )
}
bottomPortlets {
testStatisticsGrid ( )
buildStatistics ( )
}
2020-11-13 13:18:05 -05:00
} * /