prod-artifact-when-good #34

Merged
bucky merged 9 commits from prod-artifact-when-good into master 2023-10-23 15:54:28 -07:00
1 changed files with 51 additions and 8 deletions

49
Jenkinsfile vendored
View File

@ -1,3 +1,5 @@
def buildArtifact = true
pipeline { pipeline {
agent { label 'ruby && freebsd' } agent { label 'ruby && freebsd' }
@ -18,7 +20,6 @@ pipeline {
} }
stage('Build dependencies') { stage('Build dependencies') {
steps { steps {
sh 'bundle config set --local path "vendor"'
sh 'bundle install' sh 'bundle install'
sh 'sequel -m db/migrations sqlite://db/${DB_NAME}' sh 'sequel -m db/migrations sqlite://db/${DB_NAME}'
} }
@ -26,25 +27,57 @@ pipeline {
stage('Audit Dependencies') { stage('Audit Dependencies') {
steps { steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') { catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
script {
try {
sh 'bundle exec ruby-audit check' sh 'bundle exec ruby-audit check'
sh 'bundle exec bundle-audit check >> audit.html' sh 'bundle exec bundle-audit check >> audit.html'
} catch (e) {
script {
buildArtifact = false
}
}
}
} }
} }
} }
stage('Code Linting') { stage('Code Linting') {
steps { steps {
catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
script {
try {
sh 'bundle exec rubocop --format html --out rubocop.html' sh 'bundle exec rubocop --format html --out rubocop.html'
} catch (e) {
script {
buildArtifact = false
}
}
}
} }
} }
} }
stage('Run tests') { stage('Run tests') {
steps { steps {
catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
script {
try {
sh 'bundle exec cucumber features --format html --out cucumber.html' sh 'bundle exec cucumber features --format html --out cucumber.html'
} catch (e) {
script {
buildArtifact = false
}
}
}
} }
catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') { catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
script {
try {
sh 'bundle exec rspec spec --format html --out spec.html' sh 'bundle exec rspec spec --format html --out spec.html'
} catch (e) {
script {
buildArtifact = false
}
}
}
} }
} }
} }
@ -61,13 +94,19 @@ pipeline {
} }
} }
stage('Build production deliverable') { stage('Build production deliverable') {
when {
expression {
buildArtifact
}
}
steps { steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') { catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
sh ''' #!/usr/local/bin/bash sh ''' #!/usr/local/bin/bash
ZIP_FILE="url-shortener_${BRANCH_NAME}_$(date "+%Y-%m-%d_%H-%M-%S").tgz" ZIP_FILE="url-shortener_${BRANCH_NAME}_$(date "+%Y-%m-%d_%H-%M-%S").tgz"
CUR_DIR=$(pwd) CUR_DIR=$(pwd)
bundle config set --local without 'test' bundle config set --local without 'test'
bundle clean bundle config set --local path "vendor"
bundle install
mkdir -p /tmp/url-shortener mkdir -p /tmp/url-shortener
cp -R * /tmp/url-shortener cp -R * /tmp/url-shortener
cp .env.rb /tmp/url-shortener/ cp .env.rb /tmp/url-shortener/
@ -83,9 +122,13 @@ pipeline {
} }
} }
stage('Clean up deliverable') { stage('Clean up deliverable') {
when {
expression {
buildArtifact
}
}
steps { steps {
sh 'rm -rf /tmp/url-shortener' sh 'rm -rf /tmp/url-shortener'
sh 'rm -rf *.tgz'
} }
} }
} }