release.jenkins.pipeline 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. pipeline {
  2. agent any
  3. environment {
  4. basePath = "/root/docker-cache/jenkins/jenkins_home/workspace/Sers/develop/${env.build_number}"
  5. APPNAME = "Sers"
  6. SVN_PATH = "svn://svn.ki.lith.cloud/Sers"
  7. SVN_USERNAME = "jenkins"
  8. SVN_PASSWORD = "**"
  9. NUGET_PATH = "/root/docker-cache/jenkins/jenkins_home/workspace/.nuget"
  10. NUGET_SERVER = "http://nuget.lith.cloud:8"
  11. NUGET_KEY = "**"
  12. DOCKER_ImagePrefix = "docker-dev.lith.cloud:8/"
  13. DOCKER_USERNAME = " "
  14. DOCKER_PASSWORD = " "
  15. DOCKER_ImagePrefix_Prd = "docker.lith.cloud:8/"
  16. DOCKER_USERNAME_Prd = " "
  17. DOCKER_PASSWORD_Prd = " "
  18. }
  19. stages {
  20. stage('#1.1 develop - init code') {
  21. steps {
  22. script {
  23. env.codePath = "$basePath/develop"
  24. }
  25. echo "#1 build_number: ${env.build_number}"
  26. echo "#1.1 pull code from svn to Path: $codePath"
  27. 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; '"
  28. echo "#1.2 change-app-version"
  29. 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; '"
  30. }
  31. }
  32. stage('#1.2 develop - build') {
  33. steps {
  34. 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; '"
  35. }
  36. }
  37. stage('#1.3 develop - push') {
  38. steps {
  39. 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; '"
  40. }
  41. }
  42. stage('#2 deploy to prod?') {
  43. steps {
  44. timeout(time:1800,unit:'SECONDS') {
  45. script {
  46. inputData = input message: "release to prod?", ok: 'Proceed?', parameters: [string(defaultValue: '', description: 'text comment', name: 'comment')], submitterParameter: 'APPROVER'
  47. }
  48. }
  49. }
  50. }
  51. stage('#3.1 prd - init code') {
  52. steps {
  53. script {
  54. env.codePath = "$basePath/prd"
  55. }
  56. echo "#1 build_number: ${env.build_number}"
  57. echo "#1.1 pull code from svn to Path: $codePath"
  58. 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; '"
  59. echo "#1.2 change-app-version"
  60. sh "docker exec -i jenkins-dind sh -c 'set -e; export versionSuffix=; cd $codePath/Publish/DevOps2/build-bash; sh 20.change-app-version.bash; '"
  61. }
  62. }
  63. stage('#3.2 prd - build') {
  64. steps {
  65. 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; '"
  66. 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; '"
  67. }
  68. }
  69. stage('#3.3 prd - push') {
  70. steps {
  71. 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; '"
  72. }
  73. }
  74. stage('#3.4 prd - publish code') {
  75. steps {
  76. echo "build_number: ${env.build_number}"
  77. 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; '"
  78. }
  79. }
  80. }
  81. post {
  82. always {
  83. timeout(time:3600,unit:'SECONDS') {
  84. script {
  85. 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'
  86. echo "input: ${env.inputData}"
  87. }
  88. }
  89. echo "clean temp files"
  90. sh "rm -rf /var/jenkins_home/workspace/Sers/develop/${env.build_number}"
  91. }
  92. success {
  93. echo "build success !"
  94. }
  95. failure {
  96. echo "build failure !"
  97. }
  98. aborted {
  99. echo "build aborted !"
  100. }
  101. }
  102. }