diff --git a/Jenkinsfile b/Jenkinsfile index e3e8fb3b9..746d3f6e7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,12 +1,64 @@ pipeline { - agent any - stages { - stage('Build') { - steps { - echo 'Running build automation' - sh './gradlew build --no-daemon' - archiveArtifacts artifacts: 'dist/trainSchedule.zip' - } - } - } -} \ No newline at end of file + agent any + stages { + stage('Build') { + steps { + echo 'Running build automation' + sh './gradlew build --no-daemon ' + archiveArtifacts artifacts: 'dist/trainSchedule.zip' + } + } + stage('Build Docker Image') { + when { + branch 'master' + } + steps { + script { + app = docker.build("syrinedkhil/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_login', usernameVariable: 'deploy', passwordVariable: 'jenkins')]) { + script { + sh "sshpass -p 'jenkins' -v ssh -o StrictHostKeyChecking=no deploy@prod_ip \"docker pull syrinedkhil/train-schedule:${env.BUILD_NUMBER}\"" + try { + sh "sshpass -p 'jenkins' -v ssh -o StrictHostKeyChecking=no deploy@prod_ip \"docker stop train-schedule\"" + sh "sshpass -p 'jenkins' -v ssh -o StrictHostKeyChecking=no deploy@prod_ip \"docker rm train-schedule\"" + } catch (err) { + echo: 'caught error: $err' + } + sh "sshpass -p 'jenkins' -v ssh -o StrictHostKeyChecking=no deploy@prod_ip \"docker run --restart always --name train-schedule -p 8080:8080 -d syrinedkhil/train-schedule:${env.BUILD_NUMBER}\"" + } + } + } + } + + + + } + +}