pipeline {
    agent any
    environment {
        DOCKER_HOST = "unix:///var/run/docker.sock"
    }
    stages {
        stage('Docker Build') {
            steps {
                echo "Build new docker image from ${env.BRANCH_NAME}..."
                sh "docker build -t portfolio:${env.BRANCH_NAME} ."
            }
        }
        stage('Deploy') {
            // Deploy only master branch
            when {
                branch 'master'
            }
            steps {
                echo "Deploy new portfolio version..."
                sh "docker compose up -d"

                // Keep updated docker-compose.yml and Caddyfile for safety
                sh "docker cp portfolio:/etc/caddy/Caddyfile /home/lucas/services/portfolio/Caddyfile"
                
                // docker-compose.yml is not allready in image
                sh "docker exec -i portfolio sh -c 'cat > /tmp/docker-compose.yml' < docker-compose.yml"
                sh "docker cp portfolio:/tmp/docker-compose.yml /home/lucas/services/portfolio/docker-compose.yml"
            }
        }
    }
    post {
        always { 
            echo "Clean unused image..."
            sh "docker image prune -f" 
        }
        success { echo "Success !" }
        failure { echo "Failed." }
    }
}
