Trigger fresh Jenkins build

This commit is contained in:
VIPIN 2025-08-28 21:48:31 +05:30
parent cf07732b36
commit 93e6864431

59
Jenkinsfile vendored
View File

@ -2,72 +2,77 @@ pipeline {
agent any agent any
tools { tools {
nodejs 'Node' // Name of your NodeJS installation in Jenkins nodejs 'Node' // Make sure NodeJS installation in Jenkins Global Tool Config is named "Node"
} }
environment { environment {
WEB_IP = '13.49.223.142' // EC2 Web server IP WEB_IP = '13.49.223.142' // EC2 web server IP
SSH_CRED = 'deploy-ec2-key' // Jenkins credential ID for SSH key SSH_CRED = 'deploy-ec2-key' // Jenkins SSH key credential ID
NODE_OPTIONS = "--max_old_space_size=512" // Limit Node memory NODE_OPTIONS = "--max_old_space_size=512" // Prevent Node from consuming all memory
}
options {
ansiColor('xterm') // Colorized console logs
timestamps() // Show timestamps in console
timeout(time: 30, unit: 'MINUTES') // Fail build if it hangs
} }
stages { stages {
stage('Checkout') { stage('Checkout') {
steps { steps {
echo "🔄 Checking out code..."
checkout scm checkout scm
} }
} }
stage('Install Dependencies') { stage('Install') {
steps { steps {
echo "📦 Installing npm dependencies..." sh '''
sh 'npm ci' echo "📦 Installing dependencies..."
npm ci
'''
} }
} }
stage('Build') { stage('Build') {
steps { steps {
sh '''
echo "🏗️ Building project..." echo "🏗️ Building project..."
sh 'npm run build' npm run build
'''
} }
} }
stage('Package Build') { stage('Package') {
steps { steps {
script { sh '''
def outDir = fileExists('dist') ? 'dist' : 'build' OUT_DIR="build"
if (!fileExists(outDir)) { [ -d dist ] && OUT_DIR="dist"
error "❌ Build output not found in 'build/' or 'dist/'!"
} if [ ! -d "$OUT_DIR" ]; then
echo "❌ ERROR: No build output found (build/ or dist/)"
ls -la
exit 1
fi
echo "📦 Packaging build output..." echo "📦 Packaging build output..."
sh "tar -czf build.tar.gz -C ${outDir} ." tar -czf build.tar.gz -C "$OUT_DIR" .
'''
archiveArtifacts artifacts: 'build.tar.gz' archiveArtifacts artifacts: 'build.tar.gz'
} }
} }
}
stage('Deploy') { stage('Deploy') {
steps { steps {
script { script {
sshagent(credentials: [env.SSH_CRED]) { // Use sshagent in a script block
echo "🚀 Deploying build to ${WEB_IP}..." sshagent([env.SSH_CRED]) {
sh """ sh """
echo "🚀 Deploying to ${WEB_IP}..."
scp -o StrictHostKeyChecking=no build.tar.gz deploy@${WEB_IP}:/tmp/build.tar.gz scp -o StrictHostKeyChecking=no build.tar.gz deploy@${WEB_IP}:/tmp/build.tar.gz
ssh -o StrictHostKeyChecking=no deploy@${WEB_IP} ' ssh -o StrictHostKeyChecking=no deploy@${WEB_IP} '
sudo rm -rf /var/www/reactapp/* sudo rm -rf /var/www/reactapp/*
sudo mkdir -p /var/www/reactapp sudo mkdir -p /var/www/reactapp
sudo tar -xzf /tmp/build.tar.gz -C /var/www/reactapp sudo tar -xzf /tmp/build.tar.gz -C /var/www/reactapp
sudo systemctl reload nginx sudo systemctl reload nginx
' '
echo "✅ Deployment finished"
""" """
echo "✅ Deployment finished!"
} }
} }
} }
@ -75,7 +80,7 @@ pipeline {
} }
post { post {
success { echo "🎉 Pipeline completed successfully!" } success { echo "✅ Pipeline completed successfully" }
failure { echo "❌ Pipeline failed — check console log" } failure { echo "❌ Pipeline failed — check console log" }
} }
} }