pipeline { agent { label 'puppet' } post { always { deleteDir() /* clean up our workspace */ } success { updateGitlabCommitStatus state: 'success' } failure { updateGitlabCommitStatus state: 'failed' step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'support@confdroid.com', sendToIndividuals: true]) } } options { gitLabConnection('sourcecode.confdroid.com') } stages { stage('pulling master') { steps { sshagent(['edd05eb6-26b5-4c7b-a5cc-ea2ab899f4fa']) { sh '''git config user.name "Jenkins Server" git config user.email jenkins@confdroid.com git pull origin master git checkout -b jenkins ''' } } } stage('install gems') { steps { sh 'bundle install' } } stage('puppet parser') { steps { sh '''for file in $(find . -iname \'*.pp\'); do /opt/puppetlabs/bin/puppet parser validate --color false --render-as s --modulepath=modules $file || exit 1; done;''' } } stage('check templates') { steps{ sh '''for file in $(find . -iname \'*.erb\'); do erb -P -x -T "-" $file | ruby -c || exit 1; done;''' } } stage('puppet-lint') { steps { sh '''find . -iname *.pp -exec /var/lib/jenkins/bin/puppet-lint \\ --no-class_inherits_from_params_class-check \\ --no-variable_scope-check \\ --no-80chars-check \\ --no-arrow_alignment-check \\ --no-autoloader_layout-check \\ --no-140chars-check \\ --log-format "%{path}:%{line}:%{check}:%{KIND}:%{message}" {} \\; ''' recordIssues aggregatingResults: true, tool: puppetLint() } } stage('update repo structure') { steps { sh '''rm -Rf REPOSTRUCTURE.md echo "$(tree --dirsfirst --charset=ascii .)" > REPOSTRUCTURE.md''' } } stage('create Puppet documention') { steps { sh '/opt/puppetlabs/bin/puppet strings' } } stage('update repo') { steps { sshagent(['edd05eb6-26b5-4c7b-a5cc-ea2ab899f4fa']) { sh '''git config user.name "Jenkins Server" git config user.email jenkins@confdroid.com echo `git add -A && git commit -am "recommit for updates in build $BUILD_NUMBER"` git push origin HEAD:master''' } } } } }