pipeline {
    agent any

    stages {
        stage('Cloning Git') {
            steps {
                checkout scm
            }
        }
        stage('Bundel Creation') {
            steps {
                bat """
                    tar -zcvf bundle.tar.gz \
                        --exclude=storage \
                        --exclude=.git \
                        --exclude=.env \
                        --exclude=node_modules \
                        --exclude=vendor \
                        --exclude=tests \
                        --exclude=bootstrap/cache \
                        --exclude=public/storage \
                        .
                """
                echo "Package Bundel created"
            }
        }
        stage('Artifacts Creation') {
            steps {
                fingerprint 'bundle.tar.gz'
                archiveArtifacts 'bundle.tar.gz'
                echo "Artifacts created"
            }
        }
        stage('Artifacts Transfer to target server') {
            steps {
                withCredentials([sshUserPrivateKey(credentialsId:CREDENTIALS_ID, keyFileVariable: 'KEY_FILE', usernameVariable: 'SSH_USER')]) {
                    bat """
                        scp -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i "%KEY_FILE%" bundle.tar.gz %SSH_USER%@%SERVER_IP%:%PROJECT_PATH%
                    """
                }
                echo "Artifacts Transfered"
            }
        }
        stage('Deploy on Shared Server') {
            steps {
                withCredentials([sshUserPrivateKey(credentialsId:CREDENTIALS_ID, keyFileVariable: 'KEY_FILE', usernameVariable: 'SSH_USER')]) {
                    bat """
                        ssh -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -i "%KEY_FILE%" %SSH_USER%@%SERVER_IP% "cd %PROJECT_PATH% && tar -xvf bundle.tar.gz && php artisan optimize"
                    """
                }
                echo "Deployed on Shared Server"
            }
        }
    }
}
