72 lines
2.5 KiB
Groovy
72 lines
2.5 KiB
Groovy
pipeline {
|
|
agent any
|
|
environment {
|
|
DOCKER_HOST = "unix:///var/run/docker.sock"
|
|
APP_VERSION = "${env.BRANCH_NAME}-${env.BUILD_NUMBER}"
|
|
}
|
|
stages {
|
|
stage('Build') {
|
|
steps {
|
|
// Get Caddy version
|
|
sh "cp .env.dist .env"
|
|
// Push portfolio version
|
|
sh "echo '\nPORTFOLIO_VERSION=${env.APP_VERSION}' >> .env"
|
|
|
|
echo "Building new portfolio version..."
|
|
sh "docker compose build"
|
|
}
|
|
}
|
|
stage('Lighthouse Audit') {
|
|
steps {
|
|
// Temporary container to get data in /dist folder
|
|
// Reuse of just build portfolio image
|
|
sh "mkdir -p ./dist-audit ./.lighthouseci"
|
|
sh "docker create --name audit-tmp portfolio:${env.APP_VERSION}"
|
|
sh "docker cp audit-tmp:/usr/share/caddy/. ./dist-audit"
|
|
sh "docker rm audit-tmp"
|
|
|
|
// Add audit config in the same folder
|
|
sh "cp .lighthouserc.cjs ./dist-audit/audit-config.cjs"
|
|
|
|
// Launch special service in docker compose
|
|
sh "docker compose --profile audit run --rm lighthouse-audit"
|
|
}
|
|
}
|
|
stage('Deploy') {
|
|
// Deploy only master branch
|
|
when {
|
|
branch 'master'
|
|
}
|
|
steps {
|
|
echo "Deploy new portfolio version..."
|
|
sh "docker compose up -d"
|
|
|
|
// Update caddy-reverse-proxy cache
|
|
sh "docker exec caddy-reverse-proxy caddy reload --config /etc/caddy/Caddyfile"
|
|
|
|
// Keep updated docker-compose.yml and Caddyfile for safety
|
|
sh "cp docker-compose.yml /backup-portfolio/docker-compose.yml"
|
|
sh "docker cp portfolio:/etc/caddy/Caddyfile /backup-portfolio/Caddyfile"
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
echo "Publish Lighthouse audit..."
|
|
publishHTML([
|
|
allowMissing: true,
|
|
alwaysLinkToLastBuild: true,
|
|
keepAll: false,
|
|
reportDir: '.lighthouseci',
|
|
reportFiles: 'index.html',
|
|
reportName: 'Lighthouse Report'
|
|
])
|
|
echo "Clean unused image and files..."
|
|
sh "docker image prune -f"
|
|
sh "rm -rf ./dist-audit"
|
|
}
|
|
success { echo "Success !" }
|
|
failure { echo "Failed." }
|
|
}
|
|
}
|