pipeline { agent any stages { stage('Build Docker Image') { steps { sh ''' docker build -t 192.168.1.80:5000/demo-app:${BUILD_NUMBER} . docker tag 192.168.1.80:5000/demo-app:${BUILD_NUMBER} 192.168.1.80:5000/demo-app:latest ''' } } stage('Smoke Test Image') { steps { sh ''' docker run -d --name demo-app-test 192.168.1.80:5000/demo-app:${BUILD_NUMBER} sleep 5 docker ps | grep demo-app-test docker rm -f demo-app-test ''' } } stage('Push Image to Registry') { steps { sh ''' docker push 192.168.1.80:5000/demo-app:${BUILD_NUMBER} docker push 192.168.1.80:5000/demo-app:latest ''' } } } post { always { sh 'docker rm -f demo-app-test || true' } } }