pipeline { agent any environment { APP_SESSION_SECRET = '' DB_NAME = 'url_shortener.db' } stages { stage('Init') { steps { sh 'rbenv local 3.2.2' script { env.APP_SESSION_SECRET = sh(script: 'ruby secret.rb', returnStdout: true) } sh 'echo "ENV[\\\"APP_SESSION_SECRET\\\"] ||= $(ruby secret.rb)" > .env.rb' sh 'echo "ENV[\\\"DB_NAME\\\"] ||= \\\"${DB_NAME}\\\"" >> .env.rb' sh 'cat .env.rb' } } stage('Build dependencies') { steps { sh 'bundle install' sh 'sequel -m db/migrations sqlite://db/${DB_NAME}' } } stage('Run tests') { steps { sh 'cucumber' sh 'cucumber features --format json --out cucumber.json' } } stage('Report results') { steps { archive(includes: 'pkg/*.gem') publishHTML (target: [ allowMissing: false, alwaysLinkToLastBuild: false, keepAll: true, reportDir: 'coverage', reportFiles: 'index.html', reportName: 'Test Results', reportTitles: 'Test Coverage']) cucumber buildStatus: 'UNCHANGED', customCssFiles: '', customJsFiles: '', failedFeaturesNumber: -1, failedScenariosNumber: -1, failedStepsNumber: -1, fileIncludePattern: '**/cucumber.json', pendingStepsNumber: -1, skippedStepsNumber: -1, sortingMethod: 'ALPHABETICAL', undefinedStepsNumber: -1 mattermostSend channel: 'git-messages', color: 'good', message: "Finished building [${JOB_NAME}](${JOB_URL}) [#${BUILD_NUMBER}](${BUILD_URL})", text: 'Build Finished' } } } }