pipeline {
    agent any
    environment {
        DOCKER_HOST = "unix:///run/user/1001/docker.sock"
        APP_VERSION = "${env.BRANCH_NAME}-${env.BUILD_NUMBER}"
        DOCKER_CONFIG = "${env.WORKSPACE}/.docker"
    }
    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 {

        //         // Create volumes but no run with safety
        //         sh "docker rm -f audit-tmp lighthouse-audit || true"
        //         sh "docker compose --profile audit create --no-build --remove-orphans lighthouse-audit"

        //         // 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"
        //         sh "docker rm -f audit-tmp"

        //         // 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 start -a lighthouse-audit"

        //         // Get reports
        //         sh "mkdir -p ./.lighthouseci"
        //         sh "docker cp lighthouse-audit:/app/.lighthouseci/. ./.lighthouseci/"

        //         // Clean
        //         sh "docker rm -f 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"
            }
        }
    }
    post {
        always { 
            // echo "Publish Lighthouse audit..."
            // publishHTML([
            //     allowMissing: true,
            //     alwaysLinkToLastBuild: true,
            //     keepAll: false,
            //     reportDir: '.lighthouseci',
            //     reportFiles: '*.html',
            //     reportName: 'Lighthouse Report'
            // ])
            echo "Clean unused image"
            sh "docker image prune -f" 
        }
        success { echo "Success !" }
        failure { echo "Failed." }
    }
}
