cloudamatic/mu

View on GitHub
Jenkinsfile

Summary

Maintainability
Test Coverage
pipeline {
  agent any
  options {
      disableConcurrentBuilds()
  }
  stages {
      stage ('git')
      {
        steps 
        {
          checkout([
            $class: 'GitSCM',
            branches: scm.branches,
            doGenerateSubmoduleConfigurations: false,
            extensions: scm.extensions + [[$class: 'SubmoduleOption', disableSubmodules: false, recursiveSubmodules: true, reference: '', trackingSubmodules: false]],
            submoduleCfg: [],
            userRemoteConfigs: scm.userRemoteConfigs])
        }
      }
      

      stage('Initial Cleanup'){
        steps {
          script {
            sh 'sudo python /opt/mu/lib/test/clean_up.py'
            sh 'sudo rm  -rf /tmp/inspec_retries/*'
            sh 'sudo rm -f /tmp/*.yaml'
            sh "echo ${GIT_BRANCH}"
            sh "${workspace}/bin/mu-upload-chef-artifacts"
          }
        }
      }

//-----------------------------------------------------------------------------------------


      stage('Lint && mu-deploy'){
        parallel{
            
          stage('Rubocop'){
            steps{
              script {
                try {
                  sh "/usr/local/ruby-current/bin/rubocop ${workspace}/modules/"
                } catch(err) {
                    echo "ERROR: ${err}"
                    currentBuild.result = 'SUCCESS'
                }
              }
            }
          }  

          stage('Foodcritic MU Cookbooks'){
            steps{
              script {
                try {
                  sh "/usr/local/ruby-current/bin/foodcritic ${workspace}/cookbooks/*"
                } catch (err) {
                    echo "ERROR: ${err}"
                    currentBuild.result = 'SUCCESS'
                }
              }
            }
          }    


          stage("mu-deploy simple-server-rails"){
            steps {
              script{
                try{
                  //sh "sleep 135"
                  sh "${workspace}/bin/mu-deploy -n ${workspace}/demo/simple-server-rails.yaml"
                } catch (err) {
                    echo "ERROR: ${err}"
                    currentBuild.result = 'UNSTABLE'
                  }
                }
              }
            }
       

          stage("mu-deploy demo-flask-recipe"){
            steps {
              script{
                try{
                  //sh "sleep 135"
                  sh "${workspace}/bin/mu-deploy -n ${workspace}/demo/demo_recipes.yaml"
                } catch (err) {
                    echo "ERROR: ${err}"
                    currentBuild.result = 'UNSTABLE'
                  }
                }
              }
            }



            stage("mu-master-install"){
              steps{
                script {
                  try{
                    sh "${workspace}/test/exec_mu_install.py"
                  } catch (err) {
                      echo "ERROR: ${err}"
                      currentBuild.result = 'UNSTABLE'
                  }
                }
              }
            }

//            stage ("wordpress.yaml") {
//              steps{
//                  script{
//                    try{
//                        sh "sleep 145"
//                        sh "${workspace}/bin/mu-deploy -n ${workspace}/demo/demo_recipes.yaml"
//                      } catch (err) {
//                        echo "ERROR: ${err}"
//                        currentBuild.result = 'UNSTABLE'
//                      }
//                 }
//              }
//            }
        }
    }


//-----------------------------------------------------------------------------------------


//      stage('Inspec Verify'){
//        parallel{
            stage("Inspec simple-server-rails"){
              steps {
                script{
                    try {
                      sh "python ${workspace}/test/exec_inspec.py -p simple-server-rails-test -b simple-server-rails.yaml"
                    } catch (err) {
                        echo "ERROR: ${err}"
                        currentBuild.result = 'UNSTABLE'
                    }
                }
              }
            }
            stage("Retry Failures")
            {
              steps {
                script {
                  try {
                    sh "python ${workspace}/test/exec_retry.py"
                  }
                  catch (err) {
                    echo "ERROR: ${err}"
                    currentBuild.result = 'UNSTABLE'
                  }
                }
              }
            }

//            stage ("demo-test-profile") {
//              steps{
//                  script{
//                    try{
//                      sh "python /${workspace}/test/exec_inspec.py demo-test-profile demo_recipes.yaml"
//                      } catch (err) {
//                        echo "ERROR: ${err}"
//                        currentBuild.result = 'UNSTABLE'
//                      }
//                  }
//              }
//            }
//        }
//    }
    stage('Mu-Cleanup'){
        steps {
          script {
            sh 'sudo python /opt/mu/lib/test/clean_up.py'
            sh 'sudo rm -rf /tmp/inspec_retries/*'
            sh 'sudo rm -f /tmp/*.yaml'
          }
        }
    }
  }
}