pipeline { agent none triggers { pollSCM('H/15 * * * *') } tools { maven 'Maven 3.5.3' jdk 'OpenJDK 9' } options { buildDiscarder(logRotator(numToKeepStr: '5')) } stages { stage('Build') { parallel { stage('Build on Windows') { agent { label "windows" } steps { bat 'echo %JAVA_HOME%' bat 'mvn -B -DskipTests clean package' } post { success { stash includes: 'plugins/**/target/*.jar*', name: 'windows-artifacts' } } } stage('Build on Linux') { agent { label "linux" } steps { sh 'echo $JAVA_HOME' sh 'mvn -B -DskipTests clean package' } post { success { stash includes: 'plugins/**/target/*.jar*', name: 'linux-artifacts' stash includes: '**/target/*.jar*', excludes: 'plugins/**/target/*.jar*', name: 'core-artifacts' } } } stage('Build on OSX') { agent { label "osx" } steps { sh 'echo $JAVA_HOME' sh 'mvn -B -DskipTests clean package' } post { success { stash includes: 'plugins/**/target/*.jar*', name: 'osx-artifacts' } } } } } stage('Archive artifacts') { agent any steps { unstash 'core-artifacts' unstash 'windows-artifacts' unstash 'osx-artifacts' unstash 'linux-artifacts' } post { always { archiveArtifacts artifacts: '**/target/*.jar*', fingerprint: true } } } stage('Deploy artifacts') { agent { label "linux" } steps { unstash 'core-artifacts' unstash 'windows-artifacts' unstash 'osx-artifacts' unstash 'linux-artifacts' sh 'echo $GPG_SECRET_KEYS | base64 --decode | gpg --batch --import' sh 'echo $GPG_OWNERTRUST | base64 --decode | gpg --import-ownertrust' withMaven( maven: 'Maven 3.5.3', jdk: 'OpenJDK 9', globalMavenSettingsConfig: 'global-maven-settings-ossrh', mavenOpts: '-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts' //Work around for JDK9 missing cacerts ) { sh "mvn -P linux,windows,osx,wintab deploy:deploy" } } } } }