final String publicRepo = 'https://github.com/kemitix/' final String mvn = "mvn --batch-mode --update-snapshots --errors" final Integer dependenciesSupportJDK = 10 pipeline { agent any stages { stage('release != SNAPSHOT') { // checks that the pom version is not a SNAPSHOT when the current branch is a release when { expression { (branchStartsWith('release/')) && (readMavenPom(file: 'pom.xml').version).contains("SNAPSHOT") } } steps { error("Build failed because SNAPSHOT version: [" + env.GIT_BRANCH + "]") } } stage('Install') { steps { withMaven(maven: 'maven', jdk: 'JDK 1.8') { sh "${mvn} -DskipTests install" } } } stage('Deploy (published release branch)') { when { expression { (branchStartsWith('release/') && isPublished(publicRepo)) } } steps { withMaven(maven: 'maven', jdk: 'JDK 1.8') { sh "${mvn} --activate-profiles release deploy" } } } stage('Build Java 9') { when { expression { dependenciesSupportJDK >= 9 } } steps { withMaven(maven: 'maven', jdk: 'JDK 9') { sh "${mvn} clean verify -Djava.version=9" } } } stage('Build Java 10') { when { expression { dependenciesSupportJDK >= 10 } } steps { withMaven(maven: 'maven', jdk: 'JDK 10') { sh "${mvn} clean verify -Djava.version=10" } } } } } private boolean branchStartsWith(String branchName) { startsWith(env.GIT_BRANCH, branchName) } private boolean isPublished(repo) { startsWith(env.GIT_URL, repo) } private boolean startsWith(String value, String match) { value != null && value.startsWith(match) }