pipeline {
    agent any
    environment { 
        SONARQUBE_PATH = '/var/lib/jenkins/tools/sonar-scanner-4.2.0.1873-linux/bin/sonar-scanner -Dsonar.projectKey=InfiniPath-BE-WS-Prod -Dsonar.sources=./'
        // fd_secret_ignore
        GOOGLE_CHAT_LINK = 'https://chat.googleapis.com/v1/spaces/AAAA6Wtz7Xg/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=UcaW1-lHiYQtM06nI_Ng6nxuBdpI44N6cYyrpuzeG4k'
        LINK = 'https://api.ws.infinitheism.com'
    }
    stages {
        stage('get_commit_msg') {
            steps {
                script {
                    env.GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=%B', returnStdout: true).trim()
                    env.GIT_COMMIT_EMAIL = sh(script: 'git --no-pager show -s --format=%ae', returnStdout: true).trim()
                    echo "Git committer email: ${env.GIT_COMMIT_EMAIL}"
                    echo "${GIT_COMMIT_MSG}"
                }
            }
        }
        stage('Sonarqube') {
            steps {
                script {
                    nodejs('Ravelation') {
                        withSonarQubeEnv('Sonar') {
                            sh "${env.SONARQUBE_PATH}"
                        }
                    }
                }
            }
        }
        //stage('Quality Gateway') {
            //steps {
                //script {
                    //def qualitygateway = waitForQualityGate()
                    //if (qualitygateway.status != 'OK') {
                       // error "Pipeline aborted due to quality gate failure: ${qualitygateway.status}"
                  //  }
              //  }
           // }
       // }
        stage('Deployment') {
            steps {
                script {
                    echo "Deploying Production Build"
                    sh 'tar -czvf dist.tar.gz *'
                    sh 'scp dist.tar.gz infinipath@api.ws.infinitheism.com:/var/www/html/infinipath-websockets'
                    sh 'ssh infinipath@api.ws.infinitheism.com "cd /var/www/html/infinipath-websockets && sudo tar -xvzf dist.tar.gz"'
                    sh 'ssh infinipath@api.ws.infinitheism.com "sudo chown -R infinipath:infinipath /var/www/html/infinipath-websockets"'
                    sh 'ssh infinipath@api.ws.infinitheism.com "cd /var/www/html/infinipath-websockets && /home/infinipath/.nvm/versions/node/v18.18.2/bin/npm install"'
                    sh 'ssh infinipath@api.ws.infinitheism.com "sudo systemctl restart infinipathws.service"' 
                    echo "Deployment success"
                }
            }
        }
    }
    post {
        success {
            script {
                googlechatnotification(
                    message: "Project Name: ${JOB_NAME} Build ${BUILD_NUMBER} with commit: ${GIT_COMMIT_MSG}, Git committer email: ${GIT_COMMIT_EMAIL} from Branch production on Environment Prod was successful. Check output in ${LINK}.",
                    url: "${env.GOOGLE_CHAT_LINK}"
                )
            }
        }
        failure {
            script {
                googlechatnotification(
                    message: "Project Name: ${JOB_NAME} Build ${BUILD_NUMBER} with commit: ${GIT_COMMIT_MSG}, Git committer email: ${GIT_COMMIT_EMAIL} from Branch production failed. Check output logs at ${env.RUN_DISPLAY_URL}.",
                    url: "${env.GOOGLE_CHAT_LINK}"
                )
            }
        }
        always { 
            cleanWs()
        }
    }
}
