diff --git a/Jenkinsfile b/Jenkinsfile index e3e8fb3b..294a9597 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,5 +8,52 @@ pipeline { archiveArtifacts artifacts: 'dist/trainSchedule.zip' } } + stage('Build Docker Image') { + when { + branch 'master' + } + steps { + script { + app = docker.build("aaekwal/train-schedule") + app.inside { + sh 'echo $(curl localhost:8080)' + } + } + } + } + stage('Push Docker Image') { + when { + branch 'master' + } + steps { + script { + docker.withRegistry('https://registry.hub.docker.com', 'docker_hub_login') { + app.push("${env.BUILD_NUMBER}") + app.push("latest") + } + } + } + } + stage('DeployToProduction') { + when { + branch 'master' + } + steps { + input 'Deploy to Production?' + milestone(1) + withCredentials([usernamePassword(credentialsId: 'webserver_id', usernameVariable: 'USERNAME', passwordVariable: 'USERPASS')]) { + script { + sh "sshpass -p '$USERPASS' -v ssh -o StrictHostKeyChecking=no $USERNAME@$prod_ip \"docker pull aaekwal/train-schedule:${env.BUILD_NUMBER}\"" + try { + sh "sshpass -p '$USERPASS' -v ssh -o StrictHostKeyChecking=no $USERNAME@$prod_ip \"docker stop train-schedule\"" + sh "sshpass -p '$USERPASS' -v ssh -o StrictHostKeyChecking=no $USERNAME@$prod_ip \"docker rm train-schedule\"" + } catch (err) { + echo: 'caught error: $err' + } + sh "sshpass -p '$USERPASS' -v ssh -o StrictHostKeyChecking=no $USERNAME@$prod_ip \"docker run --restart always --name train-schedule -p 8080:8080 -d aaekwal/train-schedule:${env.BUILD_NUMBER}\"" + } + } + } + } } -} \ No newline at end of file +}