Merge pull request 'prod-artifact-when-good' (#34) from prod-artifact-when-good into master
Gitea Bucky/url-shortener/pipeline/head This commit looks good Details

Reviewed-on: #34
master
bucky 2023-10-23 15:54:27 -07:00
commit b62d45d0d8
1 changed files with 51 additions and 8 deletions

59
Jenkinsfile vendored
View File

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