refacto(ci): local and jenkins Lighthouse audit use common docker compose service #3

Merged
Lucas merged 3 commits from develop into master 2026-01-12 16:17:54 +00:00
4 changed files with 33 additions and 16 deletions

View File

@@ -4,6 +4,7 @@ module.exports = {
staticDistDir: '/app/dist',
settings: {
chromeFlags: '--no-sandbox --disable-setuid-sandbox --headless=new --disable-gpu --disable-dev-shm-usage',
targets: ['filesystem'],
},
numberOfRuns: 1
},

8
Jenkinsfile vendored
View File

@@ -21,9 +21,9 @@ pipeline {
// Create volumes but no run with safety
sh "docker rm -f audit-tmp lighthouse-audit || true"
sh "docker compose --profile audit create lighthouse-audit"
sh "docker compose --profile audit create --no-build --remove-orphans lighthouse-audit"
// Extract astro data from image to tmp-dist
// Extract astro data from temp container to tmp-dist folder
sh "docker create --name audit-tmp portfolio:${env.APP_VERSION}"
sh "mkdir -p ./tmp-dist"
sh "docker cp audit-tmp:/usr/share/caddy/. ./tmp-dist"
@@ -32,9 +32,10 @@ pipeline {
// Inject data from tmp-dist and config to audit container
sh "docker cp ./tmp-dist/. lighthouse-audit:/app/dist/"
sh "docker cp .lighthouserc.cjs lighthouse-audit:/app/dist/audit-config.cjs"
sh "rm -rf ./tmp-dist"
// Now run
sh "docker compose --profile audit run lighthouse-audit"
sh "docker start -a lighthouse-audit"
// Get reports
sh "mkdir -p ./.lighthouseci"
@@ -42,7 +43,6 @@ pipeline {
// Clean
sh "docker rm -f lighthouse-audit"
sh "rm -rf ./tmp-dist"
}
}
stage('Deploy') {

View File

@@ -20,14 +20,16 @@ services:
volumes:
- audit_dist:/app/dist
- audit_reports:/app/.lighthouseci
- npm_cache:/root/.npm
environment:
- CHROME_PATH=/usr/bin/chromium-browser
working_dir: /app
command: npx @lhci/cli@${LHCI_VERSION} collect --config=/app/dist/audit-config.cjs
command: npx --prefer-offline @lhci/cli@${LHCI_VERSION} autorun --config=/app/dist/audit-config.cjs
volumes:
audit_dist:
audit_reports:
npm_cache:
networks:
reverse-proxy:

View File

@@ -1,14 +1,28 @@
#!/bin/bash
mkdir -p ./.lighthouseci
# Clean old audits and containers
rm -rf ./.lighthouseci
docker rm -f lighthouse-audit || true
docker run --rm \
--user 0:0 \
-v ./dist:/app/dist \
-v ./.lighthouserc.cjs:/app/.lighthouserc.cjs \
-v ./.lighthouseci:/app/.lighthouseci \
-w /app \
-e CHROME_PATH=/usr/bin/chromium-browser \
zenika/alpine-chrome:with-node \
npx @lhci/cli@0.15.x collect \
--config=/app/.lighthouserc.cjs
# Load env file and avoid warning for unused portofolio version
if [ -f .env.dist ]; then
export $(grep -v '^#' .env.dist | xargs)
fi
export PORTFOLIO_VERSION="local-audit"
# Create container but no start
docker compose --profile audit create --no-build --remove-orphans lighthouse-audit
# Inject data and config to container
docker cp ./dist/. lighthouse-audit:/app/dist/
docker cp .lighthouserc.cjs lighthouse-audit:/app/dist/audit-config.cjs
# Now run
docker start -a lighthouse-audit
# Get reports
mkdir -p ./.lighthouseci
docker cp lighthouse-audit:/app/.lighthouseci/. ./.lighthouseci/
# Clean container
docker rm -f lighthouse-audit