pipeline { agent none options { buildDiscarder(logRotator(numToKeepStr: '10')) } environment { DEPLOY_PATH = getDeployPath() ENV_FILE_ID = getEnvFileId() TARGET_URL = getHealthUrl() } stages { stage('Checkout') { agent { label getAgentLabel() } steps { checkout scm } } stage('Inject Environment File') { agent { label getAgentLabel() } steps { configFileProvider( [configFile( fileId: ENV_FILE_ID, targetLocation: 'src/environments/environment.ts', replaceTokens: true )] ) { echo "Environment file injected for ${env.BRANCH_NAME}" } } } stage('Build Angular') { agent { label getAgentLabel() } steps { sh ''' npm install ng build --configuration production --base-href /admin/ ''' } } stage('Deploy') { agent { label getAgentLabel() } steps { sh ''' rm -rf $DEPLOY_PATH/* cp -r dist/portfolio-admin/browser/* $DEPLOY_PATH/ sudo /usr/bin/systemctl reload nginx ''' } } stage('Health Check') { agent { label getAgentLabel() } steps { sh """ sleep 2 curl -f ${TARGET_URL} """ } } } post { failure { echo "Deployment failed!" } success { echo "Deployment successful!" } } } // -------- Helper Methods -------- def getAgentLabel() { if (env.BRANCH_NAME == 'prod') { return 'oracle-prod' } else { return 'built-in' // for develop } } def getEnvFileId() { if (env.BRANCH_NAME == 'prod') { return 'admin-prod-properties' } else { return 'admin-uat-properties' } } def getDeployPath() { if (env.BRANCH_NAME == 'prod') { return "/var/www/bangararaju.kottedi.in/admin" } else { return "/var/www/bangararaju.kottedi.in/admin" } } def getHealthUrl() { if (env.BRANCH_NAME == 'prod') { return "https://bangararaju.kottedi.in/admin" } else { return "https://bangararaju-uat.kottedi.in/admin" } }