pipeline { agent { label 'kitchen-slave' } options { timestamps() ansiColor('xterm') } environment { SALT_KITCHEN_PLATFORMS = "/var/jenkins/workspace/platforms.yml" SALT_KITCHEN_DRIVER = "/var/jenkins/workspace/driver.yml" PATH = "/usr/local/rbenv/shims/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin" RBENV_VERSION = "2.4.2" TEST_SUITE = "py3" TEST_PLATFORM = "ubuntu-1604" PY_COLORS = 1 } stages { stage('github-pending') { steps { githubNotify credentialsId: 'test-jenkins-credentials', description: "running ${TEST_SUITE}-${TEST_PLATFORM}...", status: 'PENDING', context: "jenkins/pr/${TEST_SUITE}-${TEST_PLATFORM}" } } stage('setup') { steps { sh 'bundle install --with ec2 windows --without opennebula docker' } } stage('run kitchen') { steps { script { withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sshagent(credentials: ['jenkins-testing-ssh-key']) { sh 'ssh-add ~/.ssh/jenkins-testing.pem' sh 'bundle exec kitchen converge $TEST_SUITE-$TEST_PLATFORM || bundle exec kitchen converge $TEST_SUITE-$TEST_PLATFORM' sh 'bundle exec kitchen verify $TEST_SUITE-$TEST_PLATFORM' } }} } post { always { script { withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { sshagent(credentials: ['jenkins-testing-ssh-key']) { sh 'ssh-add ~/.ssh/jenkins-testing.pem' sh 'bundle exec kitchen destroy $TEST_SUITE-$TEST_PLATFORM' } }} archiveArtifacts artifacts: 'artifacts/xml-unittests-output/*.xml' } } } } post { always { junit 'artifacts/xml-unittests-output/*.xml' cleanWs() } success { githubNotify credentialsId: 'test-jenkins-credentials', description: "The ${TEST_SUITE}-${TEST_PLATFORM} job has passed", status: 'SUCCESS', context: "jenkins/pr/${TEST_SUITE}-${TEST_PLATFORM}" } failure { githubNotify credentialsId: 'test-jenkins-credentials', description: "The ${TEST_SUITE}-${TEST_PLATFORM} job has failed", status: 'FAILURE', context: "jenkins/pr/${TEST_SUITE}-${TEST_PLATFORM}" } } }