pipeline {
    agent any
    environment {
        SONARQUBE_PATH = '/var/lib/jenkins/tools/sonar-scanner-4.2.0.1873-linux/bin/sonar-scanner -Dsonar.projectKey=AI-Enterprise-Brain-Frontend-Prod -Dsonar.sources=./'
        ENV_S3_BUCKET_PATH = 's3://allenvvariables/ai-enterprise-brain/frontend-prod.env'
        APP_URL= 'api.enterprisebrain.divami.com'
        DEPLOYMENT_PATH = '/var/www/html/ai-enterprise-brain-frontend/'
        DEPLOYMENT_USER = 'ai-ritvik'
        ENV = 'Prod'
        NODE_INSTALLATION = 'AI-Deploy'
    }
    stages {
        stage('get_commit_msg') {
            steps {
                script {
                    env.GIT_COMMIT_MSG = sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()
                    GIT_COMMIT_EMAIL = sh (
                        script: 'git --no-pager show -s --format=\'%ae\'',
                        returnStdout: true
                    ).trim()
                    echo "Git committer email: ${GIT_COMMIT_EMAIL}"
                    echo "${GIT_COMMIT_MSG}"
                }
            }
        }
        stage('Setup Environment variables') {
            steps {
                script {
                    sh "aws s3 cp ${ENV_S3_BUCKET_PATH} frontend/.env"
                }
            }
        }
        stage('build') {
            steps {
                nodejs("${env.NODE_INSTALLATION}") {
                    echo 'building'
                    dir('frontend') {
                        sh 'npm cache clean --force && npm install --force'
                        sh 'npm run build'
                    }
                }
            }
        }
        stage('deployment') {
            steps {
                script {
                    echo 'Deploying to Prod'
                    sh 'cd frontend && tar -cvzf dist.tar.gz dist/'
                    sh "cd frontend && scp dist.tar.gz ${DEPLOYMENT_USER}@${APP_URL}:${DEPLOYMENT_PATH}"
                    sh "ssh ${DEPLOYMENT_USER}@${APP_URL} \"cd ${DEPLOYMENT_PATH} && sudo tar -xvzf dist.tar.gz\""
                    sh "ssh ${DEPLOYMENT_USER}@${APP_URL} \"cd ${DEPLOYMENT_PATH} && sudo chown -R ${DEPLOYMENT_USER}:${DEPLOYMENT_USER} *\""
                    sh "ssh ${DEPLOYMENT_USER}@${APP_URL} \"cd ${DEPLOYMENT_PATH} && sudo systemctl restart apache2.service\""
                    echo 'Deployment Success'
                }
            }
        }
    }
    post {
       always { 
            script{
                cleanWs()
            }
        }
    }
}