#!groovy // Jenkinsfile properties([[$class: 'jenkins.model.BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '5', artifactNumToKeepStr: '5']],pipelineTriggers([cron('H H(9-16)/2 * * 1-5')]),]) node('someTagHere'){ def err = null currentBuild.result = "SUCCESS" wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) { try{ // will fail if takes longer than 10 minutes timeout( time: 10, unit: 'MINUTES' ){ stage 'Stage 1' slackSend (color: '#808080', message: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") checkout scm stage 'Test One' bat "python someProgram.py parameter1 parameter2" stage 'Test Two' bat "python someProgram.py parameter1 parameter2" stage 'Test Three' bat "python someProgram.py parameter1 parameter2" } stage 'cleanup' echo 'cleanup' def body = "${env.JOB_NAME} Test passed. This is an important message." def sub = env.JOB_NAME+' - Build '+env.BUILD_NUMBER+' - PASSED' def to = 'somebody@example.net' emailext body: body, subject: sub, to: to slackSend (color: '#00FF00', message: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") } catch (error){ err = error currentBuild.result = "FAILURE" def body = "${env.JOB_NAME} Test failed with ${err}. See ${env.BUILD_URL}" def sub = env.JOB_NAME+' - Build '+env.BUILD_NUMBER+' - FAILED' def to = 'somebody@example.net' emailext body: body, recipientProviders: [[ $class: 'CulpritsRecipientProvider' ]], subject: sub, to: to slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") } finally{ if (err){ throw err } } } }