pipeline { agent any environment { WORKSPACE_PROD_DIR = '/home/jenkins/prod/authz' WORKSPACE_DEV_DIR = '/home/jenkins/dev/authz' WORKSPACE_UAT_DIR = '/home/jenkins/uat/authz' WORKSPACE_SQA_DIR = '/home/jenkins/sqa/authz' WORKSPACE_VAPT_DIR = '/home/jenkins/vapt/authz' } stages { stage('Build') { steps { script { def SCANNER_HOME = tool 'SonarScanner' stage('SonarQube Analysis') { withSonarQubeEnv('SonarQube') { sh "${SCANNER_HOME}/bin/sonar-scanner" } } stage('Quality Gate') { script { timeout(time: 5, unit: 'MINUTES') { def qualityGate = waitForQualityGate abortPipeline: true if (qualityGate.status != 'OK') { error "Quality Gate failed: ${qualityGate.status}" } } } } stage('Clean Workspace') { cleanWs() } def runBranchBuild = { agentLabel, workspaceDir -> node(agentLabel) { echo "Building on branch ${env.BRANCH_NAME}" stage('Git Pull') { dir(workspaceDir) { withCredentials([gitUsernamePassword(credentialsId: 'gitlab')]) { sh 'git stash push main.go && git status && git fetch && git pull && git stash list | grep -q . && git stash pop || true' } } } } } switch(env.BRANCH_NAME) { case 'develop': runBranchBuild('uess-dev-agent', env.WORKSPACE_DEV_DIR) break; case 'main': runBranchBuild('uess-dev-agent', env.WORKSPACE_PROD_DIR) break; case 'uat': runBranchBuild('uess-uat-agent', env.WORKSPACE_UAT_DIR) break; case 'sqa': runBranchBuild('uess-sqa-agent', env.WORKSPACE_SQA_DIR) break; case 'vapt': runBranchBuild('uess-vapt-agent', env.WORKSPACE_VAPT_DIR) break; default: error "Unsupported branch for deployment: ${env.BRANCH_NAME}" break; } } } } } }