def call()

in vars/multiJdkBuild.groovy [34:116]


def call(Map params = [:]) {
  // Faster build and reduces IO needs
  properties([
    disableConcurrentBuilds(),
    durabilityHint('PERFORMANCE_OPTIMIZED'),
    buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '2'))
  ])

  // now determine params
  def jdk = params.containsKey('jdk') ? params.jdk : 'jdk_11_latest'
  def jdk17 = params.containsKey('jdk17') ? params.jdk : 'jdk_17_latest'
  def upstreamTriggers = params.containsKey('upstreamTriggers')?params.upstreamTriggers:''
  // use the cmdLine parameter otherwise default depending on current branch
  def cmdline = params.containsKey('cmdline') ? params.cmdline : ((env.NONAPACHEORG_RUN != 'y' && env.BRANCH_NAME == 'master') ?"clean deploy":"clean install")
  def cmdlineJdk11 = params.containsKey('cmdlineJdk11') ? params.cmdlineJdk11 : "clean install"
  def mvnName = params.containsKey('mvnName') ? params.mvnName : 'maven_3.8.6'


  def defaultPublishers = [artifactsPublisher(disabled: false), junitPublisher(ignoreAttachments: false, disabled: false),
                          findbugsPublisher(disabled: true), openTasksPublisher(disabled: true),
                           dependenciesFingerprintPublisher(disabled: false), invokerPublisher(disabled: true),
                            pipelineGraphPublisher(disabled: false), mavenLinkerPublisher(disabled: false)]

  def defaultPublishersJdk = [artifactsPublisher(disabled: true), junitPublisher(ignoreAttachments: false, disabled: false),
                           findbugsPublisher(disabled: true), openTasksPublisher(disabled: true),
                           dependenciesFingerprintPublisher(disabled: true), invokerPublisher(disabled: true),
                           pipelineGraphPublisher(disabled: true), mavenLinkerPublisher(disabled: true)]

  def publishers = params.containsKey('publishers') ? params.publishers : defaultPublishers


  pipeline {
    agent any
    triggers { 
        upstream(upstreamProjects: upstreamTriggers, threshold: hudson.model.Result.SUCCESS) 
    }

    stages{
      stage("Parallel Stage") {
        parallel {
          stage("Build JDK11") {
            agent { node { label 'ubuntu' } }
            options { timeout(time: 120, unit: 'MINUTES') }
            steps {
              mavenBuild(jdk, cmdline, mvnName, publishers)
            }
          }
          stage("Build JDK17") {
            agent { node { label 'ubuntu' } }
            options { timeout(time: 120, unit: 'MINUTES') }
            steps {
              mavenBuild(jdk17, cmdlineJdk11, mvnName, publishers)
            }
          }
        }
      } 
      
    }
    post {
      always {
        cleanWs() // deleteDirs: true, notFailBuild: true, patterns: [[pattern: '**/.repository/**', type: 'INCLUDE']]
      }
      unstable {
        script{
          notifyBuild( "Unstable Build ")
        }
      }
      failure {
        script{
          notifyBuild( "Error in build ")
        }
      }
      success {
        script {
          def previousResult = currentBuild.previousBuild?.result
          if (previousResult && !currentBuild.resultIsWorseOrEqualTo( previousResult ) ) {
            notifyBuild( "Fixed" )
          }
        }
      }
    }
  }
}