blob: fdf18f3264da912cbd53368d85a93c444486b36e [file] [log] [blame]
pipeline {
agent {
label 'ubuntu'
}
tools {
ant 'ant_1.10.10'
maven 'maven_3.6.3'
jdk 'jdk_1.8_latest'
}
environment {
ANT_OPTS = "-Djavax.xml.accessExternalSchema=all"
}
stages {
stage("Initialization") {
steps {
script {
currentBuild.displayName = "#${BUILD_NUMBER} CXF ${params.Version} JAX-RS 2.1 TCK"
}
}
}
stage("Prepare") {
steps {
cleanWs()
}
}
stage ('Check tooling') {
steps {
sh '''
echo "PATH = ${PATH}"
echo "M2_HOME = ${M2_HOME}"
echo "JAVA_HOME = ${JAVA_HOME}"
echo "ANT_HOME = ${ANT_HOME}"
echo "WORKSPACE = ${PWD}"
'''
}
}
stage('Download JakartaEE TCK') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: 'refs/tags/8.0.2']],
userRemoteConfigs: [[url: 'https://github.com/eclipse-ee4j/jakartaee-tck']],
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'jakartaee-tck']]
])
}
}
stage('Download Glassfish 5.1.0') { // for display purposes
steps {
sh 'wget https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/5.1.0/glassfish-5.1.0.zip'
sh 'unzip glassfish-5.1.0.zip'
sh 'rm glassfish-5.1.0.zip'
}
}
stage('Download Apache CXF bits') {
steps {
echo "Using Apache CXF version: " + params.Version
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.apache.cxf:cxf-core:${params.Version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.apache.cxf:cxf-rt-frontend-jaxrs:${params.Version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.apache.cxf:cxf-rt-rs-client:${params.Version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.apache.cxf:cxf-rt-rs-sse:${params.Version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.apache.cxf:cxf-rt-transports-http:${params.Version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
echo "Including additional dependencies (woodstox, stax2, ...)"
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.apache.cxf:cxf-parent:${params.Version}:pom -Dtransitive=false -Ddest=."
script {
echo "Detect additional dependencies (woodstox, stax2, ...) versions"
woodstox_version = sh(returnStdout: true, script: "grep '<cxf.woodstox.core.version>' cxf-parent-${params.Version}.pom").replaceAll("[\n\r]", "").replaceAll(".+[>](.+)[<].+", '$1')
staxapi_version = sh(returnStdout: true, script: "grep '<cxf.woodstox.stax2-api.version>' cxf-parent-${params.Version}.pom").replaceAll("[\n\r]", "").replaceAll(".+[>](.+)[<].+", '$1')
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=com.fasterxml.woodstox:woodstox-core:${woodstox_version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DremoteRepositories=https://repository.apache.org/snapshots,https://repository.apache.org -Dartifact=org.codehaus.woodstox:stax2-api:${staxapi_version}:jar -Dtransitive=false -Ddest=glassfish5/glassfish/lib"
}
sh "rm cxf-parent-${params.Version}.pom"
}
}
stage('Prepare JAX-RS TCK build configuration') {
steps {
withEnv(["WORKSPACE = ${PWD}"]) {
sh "wget https://raw.githubusercontent.com/apache/cxf/3.4.x-fixes/tck/ts.jte.template"
sh "sed -i '" + 's/${version}/' + params.Version + "/g' ts.jte.template"
sh "sed -i '" + 's/${woodstox_version}/' + woodstox_version + "/g' ts.jte.template"
sh "sed -i '" + 's/${staxapi_version}/' + staxapi_version + "/g' ts.jte.template"
sh "sed -i '" + 's#${GF_HOME}#' + "${WORKSPACE}/glassfish5/glassfish" + "#g' ts.jte.template"
sh "cp jakartaee-tck/bin/xml/impl/glassfish/jersey.xml jakartaee-tck/bin/xml/impl/glassfish/cxf.xml"
}
}
}
stage('Build JAX-RS TCK') {
steps {
withEnv([
"WORKSPACE=${pwd()}",
"TS_HOME=${WORKSPACE}/jakartaee-tck",
"javaee_home=${WORKSPACE}/glassfish5",
"GF_HOME=${WORKSPACE}/glassfish5/glassfish",
"AS_JAVA=$JAVA_HOME",
"deliverabledir=jaxrs"
]) {
sh 'yes | cp -vr ts.jte.template jakartaee-tck/install/jaxrs/bin/ts.jte'
dir("${TS_HOME}/install/${deliverabledir}/bin") {
sh "ant build.all"
sh "ant update.jaxrs.wars"
}
dir("${TS_HOME}/release/tools/") {
sh "ant jaxrs"
}
}
}
}
stage('Run JAX-RS TCK') {
steps {
withEnv([
"WORKSPACE=${pwd()}",
"TS_HOME=${WORKSPACE}/restful-ws-tck",
"javaee_home=${WORKSPACE}/glassfish5",
"GF_HOME=${WORKSPACE}/glassfish5/glassfish",
"AS_JAVA=$JAVA_HOME",
"deliverabledir=jaxrs"
]) {
sh "cp -r jakartaee-tck/release/JAXRS_BUILD/latest/restful-ws-tck ${WORKSPACE}"
sh "yes | cp -vr ts.jte.template ${TS_HOME}/bin/ts.jte"
// It seems to be impossible to exclude Jersey from the Glassfish deployment but it
// interferes with Apache CXF, as such some tests cases are failing. Modifying the Jersey
// manifest to exclude 'javax.ws.rs.ext.RuntimeDelegate' from Jersey so the Apache CXF
// implementation will be used reliably all the time.
sh 'zip -d ${WORKSPACE}/glassfish5/glassfish/modules/jersey-server.jar META-INF/services/javax.ws.rs.ext.RuntimeDelegate'
dir("${TS_HOME}/bin") {
sh "ant config.vi"
sh "ant deploy.all"
script {
try {
echo 'Running all TCK tests ...'
sh "ant run.all"
} catch (exc) {
echo 'Some TCK tests have failed, marking build as unstable'
currentBuild.result = 'UNSTABLE'
}
}
}
}
}
post {
always {
withEnv([
"WORKSPACE=${pwd()}",
"TS_HOME=${WORKSPACE}/restful-ws-tck",
]) {
dir("${TS_HOME}/bin") {
sh "ant stop-server -f xml/impl/glassfish/config.vi.xml"
}
sh "mv /tmp/JT* ${WORKSPACE}"
}
}
}
}
}
post {
always {
archiveArtifacts artifacts: 'jakartaee-tck/release/JAXRS_BUILD/latest/restful*.zip', fingerprint: true
archiveArtifacts artifacts: 'JTwork/**', fingerprint: true
archiveArtifacts artifacts: 'JTreport/**', fingerprint: true
cleanWs()
}
}
}