pipeline { agent any environment { basePath = "/root/docker-cache/jenkins/jenkins_home/workspace/Sers/develop/${env.build_number}" APPNAME = "Sers" SVN_PATH = "svn://svn.ki.lith.cloud/Sers" SVN_USERNAME = "jenkins" SVN_PASSWORD = "**" NUGET_PATH = "/root/docker-cache/jenkins/jenkins_home/workspace/.nuget" NUGET_SERVER = "http://nuget.lith.cloud:8" NUGET_KEY = "**" DOCKER_ImagePrefix = "docker-dev.lith.cloud:8/" DOCKER_USERNAME = " " DOCKER_PASSWORD = " " DOCKER_ImagePrefix_Prd = "docker.lith.cloud:8/" DOCKER_USERNAME_Prd = " " DOCKER_PASSWORD_Prd = " " } stages { stage('#1.1 develop - init code') { steps { script { env.codePath = "$basePath/develop" } echo "#1 build_number: ${env.build_number}" echo "#1.1 pull code from svn to Path: $codePath" sh "docker exec -i jenkins-dind sh -c 'set -e; mkdir -p $codePath;chmod 777 $codePath; docker run -i --rm -v $codePath:/root/svn docker.lith.cloud:8/dockerhub/serset/svn-client svn checkout \"$SVN_PATH/branches/develop\" /root/svn --username \"$SVN_USERNAME\" --password \"$SVN_PASSWORD\" --no-auth-cache > /dev/null; '" echo "#1.2 change-app-version" sh "docker exec -i jenkins-dind sh -c 'set -e; export versionSuffix=-preview${env.build_number}; cd $codePath/Publish/DevOps2/build-bash; sh 20.change-app-version.bash; '" } } stage('#1.2 develop - build') { steps { sh "docker exec -i jenkins-dind sh -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH; cd $codePath/Publish/DevOps2/build-bash; sh startup.bash; '" } } stage('#1.3 develop - push') { steps { sh "docker exec -i jenkins-dind sh -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH; export NUGET_SERVER=$NUGET_SERVER; export NUGET_KEY=$NUGET_KEY; export DOCKER_ImagePrefix=${env.DOCKER_ImagePrefix};export DOCKER_USERNAME=${env.DOCKER_USERNAME};export DOCKER_PASSWORD=${env.DOCKER_PASSWORD}; cd $codePath/Publish/DevOps2/release-bash; sh startup.bash; '" } } stage('#2 deploy to prod?') { steps { timeout(time:1800,unit:'SECONDS') { script { inputData = input message: "release to prod?", ok: 'Proceed?', parameters: [string(defaultValue: '', description: 'text comment', name: 'comment')], submitterParameter: 'APPROVER' } } } } stage('#3.1 prd - init code') { steps { script { env.codePath = "$basePath/prd" } echo "#1 build_number: ${env.build_number}" echo "#1.1 pull code from svn to Path: $codePath" sh "docker exec -i jenkins-dind sh -c 'set -e; mkdir -p $codePath;chmod 777 $codePath; docker run -i --rm -v $codePath:/root/svn docker.lith.cloud:8/dockerhub/serset/svn-client svn checkout \"$SVN_PATH/branches/develop\" /root/svn --username \"$SVN_USERNAME\" --password \"$SVN_PASSWORD\" --no-auth-cache > /dev/null; '" echo "#1.2 change-app-version" sh "docker exec -i jenkins-dind sh -c 'set -e; export versionSuffix=; cd $codePath/Publish/DevOps2/build-bash; sh 20.change-app-version.bash; '" } } stage('#3.2 prd - build') { steps { sh "docker exec -i jenkins-dind sh -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH; cd $codePath/Publish/DevOps2/build-bash; sh startup.bash; '" sh "docker exec -i jenkins-dind sh -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH; cd $codePath/Publish/DevOps2/build-bash; sh 40.Station-publish-multiple.bash; '" } } stage('#3.3 prd - push') { steps { sh "docker exec -i jenkins-dind sh -c 'set -e; export APPNAME=$APPNAME;export NUGET_PATH=$NUGET_PATH; export NUGET_SERVER=$NUGET_SERVER;export NUGET_KEY=$NUGET_KEY; export DOCKER_ImagePrefix=${env.DOCKER_ImagePrefix_Prd};export DOCKER_USERNAME=${env.DOCKER_USERNAME_Prd};export DOCKER_PASSWORD=${env.DOCKER_PASSWORD_Prd}; cd $codePath/Publish/DevOps2/release-bash; sh startup.bash; '" } } stage('#3.4 prd - publish code') { steps { echo "build_number: ${env.build_number}" sh "docker exec -i jenkins-dind sh -c 'set -e; export codePath=$basePath/code-with-prod-version;export SVN_PATH=$SVN_PATH;export SVN_USERNAME=$SVN_USERNAME;export SVN_PASSWORD=$SVN_PASSWORD; export versionSuffix=; cd $basePath/prd/Publish/DevOps2/jenkins-bash; sh 05.svn-merge.bash; '" } } } post { always { timeout(time:3600,unit:'SECONDS') { script { env.inputData = input message: "Clean temp files, \n will wait for 3600 seconds. \n click abort to skip clean.", ok: 'Proceed', parameters: [string(defaultValue: '', description: 'text comment', name: 'comment')], submitterParameter: 'approver' echo "input: ${env.inputData}" } } echo "clean temp files" sh "rm -rf /var/jenkins_home/workspace/Sers/develop/${env.build_number}" } success { echo "build success !" } failure { echo "build failure !" } aborted { echo "build aborted !" } } }