From 556c68ad2925b84dd2cb5dbde7dd3dbb6cd19374 Mon Sep 17 00:00:00 2001 From: bodduNaidu <100412057+bodduNaidu@users.noreply.github.com> Date: Thu, 30 Oct 2025 02:15:53 +0530 Subject: [PATCH] Create jenkinsfile --- jenkinsfile | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 jenkinsfile diff --git a/jenkinsfile b/jenkinsfile new file mode 100644 index 00000000..7a5e144a --- /dev/null +++ b/jenkinsfile @@ -0,0 +1,72 @@ +pipeline { + agent any + + environment { + IMAGE_NAME = "yourdockerhub/flask" + DOCKER_CREDENTIALS_ID = "dockerhub-creds" + DEPLOY_USER = "ubuntu" + DEPLOY_SERVER = "YOUR_EC2_IP" + } + + stages { + stage('Checkout') { + steps { + git 'https://github.com/yourusername/flask.git' + } + } + + stage('Build and Test') { + steps { + sh ''' + python3 -m venv venv + . venv/bin/activate + pip install -r requirements.txt + pytest --maxfail=1 --disable-warnings -q + ''' + } + } + + stage('Docker Build') { + steps { + sh "docker build -t ${IMAGE_NAME}:${BUILD_NUMBER} ." + } + } + + stage('Push to Docker Hub') { + steps { + withCredentials([usernamePassword(credentialsId: "${DOCKER_CREDENTIALS_ID}", usernameVariable: "USER", passwordVariable: "PASS")]) { + sh ''' + echo "$PASS" | docker login -u "$USER" --password-stdin + docker push ${IMAGE_NAME}:${BUILD_NUMBER} + docker tag ${IMAGE_NAME}:${BUILD_NUMBER} ${IMAGE_NAME}:latest + docker push ${IMAGE_NAME}:latest + ''' + } + } + } + + stage('Deploy on EC2') { + steps { + sshagent(['ec2-ssh-key']) { + sh """ + ssh -o StrictHostKeyChecking=no ${DEPLOY_USER}@${DEPLOY_SERVER} ' + docker pull ${IMAGE_NAME}:latest && + docker stop flask || true && + docker rm flask || true && + docker run -d --name flask -p 80:5000 ${IMAGE_NAME}:latest + ' + """ + } + } + } + } + + post { + success { + echo '✅ Deployment successful!' + } + failure { + echo '❌ Build failed!' + } + } +}