SHARE
TWEET

Untitled

a guest Jul 12th, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!groovy
  2.  
  3. def lastCommitInfo = ""
  4. def skippingText = ""
  5. def commitContainsSkip = 0
  6. def slackMessage = ""
  7. def shouldBuild = false
  8.  
  9. def pollSpec = ""
  10.  
  11. if(env.BRANCH_NAME == "master") {
  12.     pollSpec = "*/5 * * * *"
  13. } else if(env.BRANCH_NAME == "test") {
  14.     pollSpec = "* * * * 1-5"
  15. }
  16.  
  17. pipeline {
  18.     agent any
  19.  
  20.     options {
  21.         ansiColor("xterm")
  22.     }
  23.  
  24.     triggers {
  25.         pollSCM ignorePostCommitHooks: true, scmpoll_spec: pollSpec
  26.     }
  27.  
  28.     stages {
  29.         stage('Init') {
  30.             steps {
  31.                 script {
  32.                     lastCommitInfo = sh(script: "git log -1", returnStdout: true).trim()
  33.                     commitContainsSkip = sh(script: "git log -1 | grep '.*\\[skip ci\\].*'", returnStatus: true)
  34.  
  35.                     if(commitContainsSkip == 0) {
  36.                         skippingText = "Skipping commit."
  37.                         env.shouldBuild = false
  38.                         currentBuild.result = "NOT_BUILT"
  39.                     }
  40.  
  41.                     slackMessage = "*${env.JOB_NAME}* *${env.BRANCH_NAME}* received a new commit. ${skippingText}\nHere is commmit info: ${lastCommitInfo}"
  42.                 }
  43.             }
  44.         }
  45.  
  46.         stage('Send info to Slack') {
  47.             steps {
  48.                 slackSend color: "#2222FF", message: slackMessage
  49.             }
  50.         }
  51.  
  52.         stage('Run Unit and UI Tests') {
  53.             when {
  54.                 expression {
  55.                     return env.shouldBuild != "false"
  56.                 }
  57.             }
  58.             steps {
  59.                 script {
  60.                     try {
  61.                         // Run all the tests
  62.                     } catch(exc) {
  63.                         currentBuild.result = "UNSTABLE"
  64.                         error('There are failed tests.')
  65.                     }
  66.                 }
  67.             }
  68.         }
  69.  
  70.         stage('Build application for beta') {
  71.             when {
  72.                 expression {
  73.                     return env.shouldBuild != "false"
  74.                 }
  75.             }
  76.             steps {
  77.                 // Steps for beta build
  78.             }
  79.         }
  80.  
  81.         stage('Deploy to beta') {
  82.             when {
  83.                 expression {
  84.                     return env.shouldBuild != "false"
  85.                 }
  86.             }
  87.             steps {
  88.                 // Build steps to deploy application to beta
  89.             }
  90.         }
  91.  
  92.         stage('Build application for prod') {
  93.             when {
  94.                 expression {
  95.                     return env.shouldBuild != "false" && env.BRANCH_NAME == "master"
  96.                 }
  97.             }
  98.             steps {
  99.                 // Build steps to build application for prod
  100.             }
  101.         }
  102.  
  103.         stage('Send to Prod') {
  104.             when {
  105.                 expression {
  106.                     return env.shouldBuild != "false" && env.BRANCH_NAME == "master"
  107.                 }
  108.             }
  109.             steps {
  110.                 // Steps to deploy application to prod
  111.             }
  112.         }
  113.  
  114.         stage('Inform Slack for success') {
  115.             when {
  116.                 expression {
  117.                     return env.shouldBuild != "false"
  118.                 }
  119.             }
  120.             steps {
  121.                 slackSend color: "good", message: "*${env.JOB_NAME}* *${env.BRANCH_NAME}* job is completed successfully"
  122.             }
  123.         }
  124.     }
  125.  
  126.     post {
  127.         failure {
  128.             slackSend color: "danger", message: "*${env.JOB_NAME}* *${env.BRANCH_NAME}* job is failed"
  129.         }
  130.         unstable {
  131.             slackSend color: "danger", message: "*${env.JOB_NAME}* *${env.BRANCH_NAME}* job is unstable. Unstable means test failure, code violation etc."
  132.         }
  133.     }
  134. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top