diff --git a/Jenkinsfile b/Jenkinsfile index ea524ed20..7ce13fda0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,31 +1,57 @@ -pipeline { - agent any - stages { - stage('Build') { - steps { - bat 'mvn clean' - } +node { + try { + notifyBuild('STARTED') + + stage('Prepare code') { + echo 'do checkout stuff' } stage('Testing') { - steps { - bat 'mvn test' - } + echo 'Testing' + echo 'Testing - publish coverage results' } - stage('Package') { - steps { - bat 'mvn package' - } + stage('Staging') { + echo 'Deploy Stage' } stage('Deploy') { - when{ - branch 'master' - } - steps { - bat 'mvn deploy' - } + echo 'Deploy - Backend' + echo 'Deploy - Frontend' } - } + + } catch (e) { + // If there was an exception thrown, the build failed + currentBuild.result = "FAILED" + throw e + } finally { + // Success or failure, always send notifications + notifyBuild(currentBuild.result) + } +} + +def notifyBuild(String buildStatus = 'STARTED') { + // build status of null means successful + buildStatus = buildStatus ?: 'SUCCESSFUL' + + // Default values + def colorName = 'RED' + def colorCode = '#FF0000' + def subject = "${buildStatus}: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'" + def summary = "${subject} (${env.BUILD_URL})" + + // Override default values based on build status + if (buildStatus == 'STARTED') { + color = 'YELLOW' + colorCode = '#FFFF00' + } else if (buildStatus == 'SUCCESSFUL') { + color = 'GREEN' + colorCode = '#00FF00' + } else { + color = 'RED' + colorCode = '#FF0000' + } + + // Send notifications + slackSend (color: colorCode, message: summary) }