| 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() |
| } |
| } |
| } |