pipeline {

	agent {
	    label 'migration'	    
	}

    options {
        timestamps()
        timeout(time: 60, unit: 'MINUTES')
    }
              
    stages {

        stage('Checkout') {
            steps {
                checkout poll: false,
                scm: [$class: 'GitSCM',
                        branches: [[name: '*/master']],
                        doGenerateSubmoduleConfigurations: false,
                        extensions: [
                        	[$class: 'CleanCheckout'],
                        ],
                        submoduleCfg: [],
                        userRemoteConfigs: [[url: 'git://git.eclipse.org/gitroot/ease/org.eclipse.ease.modules.git']]
                    ]
            }
        }

		stage('Fetch Doclet') {
			steps {
				copyArtifacts filter: 'developers/org.eclipse.ease.helpgenerator/target/ease.module.doclet.jar', fingerprintArtifacts: true, projectName: 'ease.build.module.doclet', selector: lastSuccessful(), target: '.', flatten: true
			}
		}
        
        stage('Build') {
			steps {
				withMaven(
					jdk: 'openjdk-jdk15-latest',
					maven: 'apache-maven-latest',
					options: [artifactsPublisher(disabled: true), findbugsPublisher(), openTasksPublisher(disabled: true)])
				{
					sh 'mvn clean verify -P module-docs -P sign'
				}
			}
        }

        stage('Reporting') {
            steps {
                recordIssues aggregatingResults: true, tools: [mavenConsole(), cpd(), pmdParser(), checkStyle(), spotBugs(useRankAsPriority: true)]
                publishCoverage adapters: [jacocoAdapter(path: 'releng/org.eclipse.ease.modules.releng.coverage/target/site/jacoco-aggregate/jacoco.xml')], sourceFileResolver: sourceFiles('STORE_LAST_BUILD')
            }
        }
    }
    
    post {
        failure {
			archiveArtifacts artifacts: '**', fingerprint: false
            emailext body: "Build ${BUILD_URL} failed.", subject: "[EASE] ${JOB_NAME } failed", to: 'christian.pontesegger@web.de'
        }

        success {
            archiveArtifacts artifacts: 'releng/org.eclipse.ease.modules.releng.p2/target/repository/', fingerprint: true            
			junit '**/target/surefire-reports/*.xml'    	    
            publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'plugins/org.eclipse.ease.modules.help/help/api-docs/javadoc', reportFiles: 'index.html', reportName: 'JavaDoc', reportTitles: ''])
        }
    }
}