pipeline {
    agent any
    environment {
        APP_URL = 'api.portal.automation.divami.com'
        //fd_secret_ignore
        GOOGLE_CHAT_LINK = 'https://chat.googleapis.com/v1/spaces/AAAA6Wtz7Xg/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=UcaW1-lHiYQtM06nI_Ng6nxuBdpI44N6cYyrpuzeG4k'
        NODE_INSTALLATION = 'Infinitheism'
        ENV = 'automation'
        DEPLOYMENT_DIR = '/var/www/html/infinitheism-backend'
        NPM_DIR = '/home/infinitheism/.nvm/versions/node/v22.14.0/bin/npm'
        SERVICE_NAME = 'infinitheism-portal-automation.service'
        DEPLOYMENT_USERNAME = 'infinitheism'
    }
    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('Deployment') {
            steps {
                script {
                    echo "Deploying"
                    sh 'tar -cvzf dist.tar.gz *'
                    // sh "ssh ${DEPLOYMENT_USERNAME}@${APP_URL} \"cd ${DEPLOYMENT_DIR} && sudo rm -rf *\""
                    sh "scp dist.tar.gz ${DEPLOYMENT_USERNAME}@${APP_URL}:${DEPLOYMENT_DIR}"
                    sh "ssh ${DEPLOYMENT_USERNAME}@${APP_URL} \"cd ${DEPLOYMENT_DIR} && sudo tar -xvzf dist.tar.gz\""
                    sh "ssh ${DEPLOYMENT_USERNAME}@${APP_URL} \"cd ${DEPLOYMENT_DIR} && sudo chown -R ${DEPLOYMENT_USERNAME}:${DEPLOYMENT_USERNAME} *\""
                    sh "ssh ${DEPLOYMENT_USERNAME}@${APP_URL} \"cd ${DEPLOYMENT_DIR} && ${NPM_DIR} i\""
                    sh "ssh ${DEPLOYMENT_USERNAME}@${APP_URL} \"cd ${DEPLOYMENT_DIR}/devops/scripts && source /home/infinipath/.nvm/nvm.sh && nvm use 23.11.0 && sudo chmod +x start-server-${ENV}.sh\""
                    sh "ssh ${DEPLOYMENT_USERNAME}@${APP_URL} \"sudo systemctl restart ${SERVICE_NAME}\""
                }
            }
        }
    }
    post {
        always { 
            script{
                def message = "Project Name: ${JOB_NAME}\n" +
                                "Build Number: ${BUILD_NUMBER}\n" +
                                "Git Branch: ${GIT_BRANCH}\n" +
                                "Environment: ${ENV}\n"

                def buildResult = currentBuild.currentResult
                if (buildResult == "SUCCESS") {
                    message +=  "Output: https://${APP_URL}\n" +
                                "Build Result: Success"
                } 
                else {
                    message += "Output Log: ${RUN_DISPLAY_URL}\n" +
                                "Build Result: Failed"
                }
                googlechatnotification message: message, url: "${GOOGLE_CHAT_LINK}"
                cleanWs()
            }
        }
    }
}