diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..0c11c36c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,62 @@ +void setBuildStatus(String message, String state) { + step([ + $class: "GitHubCommitStatusSetter", + reposSource: [$class: "ManuallyEnteredRepositorySource", url: "${env.GIT_URL}"], + contextSource: [$class: "ManuallyEnteredCommitContextSource", context: "ci/jenkins/build-status"], + errorHandlers: [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]], + statusResultSource: [ $class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]] ] + ]); +} + +pipeline { + agent any + + stages { + stage('Maven build') { + steps { + withMaven(maven: 'Maven', options: [findbugsPublisher(disabled: true)]) { + sh "mvn clean install -e -P let_reporting" + } + } + } + + stage('Reporting') { + steps { + pmd canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '**/target/pmd.xml', thresholdLimit: 'high', unHealthy: '' + findbugs canComputeNew: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', isRankActivated: true, pattern: '**/target/findbugsXml.xml', unHealthy: '' + jacoco classPattern: '**/build/classes/*/main/', execPattern: '**/target/jacoco.exec', sourcePattern: '**/src/main/java' + } + } + + stage('Tag') { + steps { + echo 'Build is tagged here.' + } + } + + stage('Push to Nexus') { + steps { + echo 'Build is pushed to Nexus here.' + } + } + + } + + post { + failure { + setBuildStatus("Build failed", "FAILURE"); + emailext body: "The build of the LET Application (${env.JOB_NAME}) failed! See ${env.BUILD_URL}", recipientProviders: [[$class: 'CulpritsRecipientProvider']], subject: 'LET Application Build Failure' + } + success { + setBuildStatus("Build complete", "SUCCESS"); + } + } + options { + timeout(time: 10, unit: 'MINUTES') + buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '7')) + } + triggers { + pollSCM('H/5 * * * *') + } + +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index d4abc728..3694a082 100644 --- a/pom.xml +++ b/pom.xml @@ -145,7 +145,73 @@ spring-security-test test - + + + + let_reporting + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.10.0 + + false + false + ${java.version} + false + + + + + check + cpd-check + + + + + + org.codehaus.mojo + findbugs-maven-plugin + 3.0.4 + + Max + false + Low + true + + + + analyze-compile + compile + + check + + + + + + org.jacoco + jacoco-maven-plugin + 0.8.2 + + + ch/ethz/seb/sebserver/* + + + + + default-prepare-agent + + prepare-agent + + + + + + + + \ No newline at end of file