Jenkinsfile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. pipeline{
  2. agent any
  3. //node {
  4. //customWorkspace '' //自定义工作空间
  5. //}
  6. parameters{
  7. choice(
  8. name: 'mode',
  9. choices: ['deploy','rollback'],
  10. description: '请选择发布或者回滚?注意:回滚到最近成功构建的版本。'
  11. )
  12. }
  13. environment{
  14. CI = "true"
  15. JAR_NAME = "platomix-gmetry-bi"
  16. PROJECT_NAME = "platomix-gmetry-bi-api"
  17. PACKAGE_PROJECT_FILE = "${env.WORKSPACE}\\${PROJECT_NAME}\\target\\${JAR_NAME}.jar"
  18. PROJECT_FOLDER = "C:\\platomix\\projects\\${JAR_NAME}\\${env.BRANCH_NAME}"
  19. RUN_PROJECT_FILE = "${PROJECT_FOLDER}\\${JAR_NAME}.jar"
  20. BAK_PROJECT_FILE = "${PROJECT_FOLDER}\\bak\\${JAR_NAME}-bak.jar"
  21. PROJECT_LOG_FOLDER = "${PROJECT_FOLDER}\\logs"
  22. MAVEN_HOME = "C:\\platomix\\component\\apache-maven-3.6.3"
  23. GIT_HOME = "C:\\platomix\\component\\git-2.12.0.2"
  24. }
  25. options{
  26. timestamps() //日志时间
  27. disableConcurrentBuilds() //禁止并行
  28. timeout(time: 30, unit: 'MINUTES') //流水线的超时时间设置30分钟
  29. }
  30. //triggers{}
  31. stages {
  32. stage("初始准备"){
  33. steps {
  34. echo "1.项目名称: ${env.JAR_NAME}"
  35. echo "2.项目目录: ${env.PROJECT_FOLDER}"
  36. echo "3.项目备份文件: ${env.BAK_PROJECT_FILE}"
  37. echo "清理临时文件目录开始.."
  38. script{
  39. try{
  40. dir("${env.WORKSPACE}@tmp") {
  41. deleteDir()
  42. }
  43. dir("${env.WORKSPACE}@script") {
  44. deleteDir()
  45. }
  46. dir("${env.WORKSPACE}@script@tmp") {
  47. deleteDir()
  48. }
  49. cleanWs() //删除${WORKSPACE}目录
  50. }catch(err){}
  51. }
  52. echo "清理临时文件目录结束.."
  53. }
  54. }
  55. stage("拉取代码"){
  56. when {
  57. environment name: 'mode',value: 'deploy'
  58. }
  59. steps {
  60. echo "开始拉取代码,当前分支:${env.BRANCH_NAME}"
  61. git branch: "${env.BRANCH_NAME}", credentialsId: 'f14bc12d-2f9c-4227-92cc-9b4d41a1ebac', url: 'http://git.platomix.net/aokunsang/platomix-gmetry-bi.git'
  62. }
  63. }
  64. stage("编译打包"){
  65. when {
  66. environment name: 'mode',value: 'deploy'
  67. }
  68. steps {
  69. echo "开始构建项目,构建BuildNumber:${env.BUILD_NUMBER}"
  70. bat "${env.MAVEN_HOME}\\bin\\mvn clean package -e -U -Dmaven.test.skip=true"
  71. }
  72. }
  73. stage("停止服务"){
  74. steps {
  75. script{
  76. try{
  77. bat "${env.PROJECT_FOLDER}\\stop.bat"
  78. }catch(err){}
  79. }
  80. echo "停止服务完成!"
  81. }
  82. }
  83. stage("JAR包备份"){
  84. when {
  85. environment name: 'mode',value: 'deploy'
  86. }
  87. steps {
  88. script{
  89. def projectFile = "${env.RUN_PROJECT_FILE}"
  90. if(fileExists(projectFile) == true){
  91. bat "move ${projectFile} ${env.BAK_PROJECT_FILE}"
  92. }
  93. bat "move ${env.PACKAGE_PROJECT_FILE} ${projectFile}"
  94. }
  95. }
  96. }
  97. stage("代码回滚"){
  98. when {
  99. environment name: 'mode',value: 'rollback'
  100. }
  101. steps {
  102. echo '开始回滚代码...'
  103. script {
  104. def rollbackFile = "${env.BAK_PROJECT_FILE}"
  105. if(fileExists(rollbackFile) == true){
  106. bat "echo f | xcopy ${rollbackFile} ${env.RUN_PROJECT_FILE} /y"
  107. echo "代码回滚已完成!"
  108. }else {
  109. error("代码回滚失败,暂无备份JAR包。")
  110. }
  111. }
  112. }
  113. }
  114. stage("启动服务"){
  115. steps {
  116. echo "正在启动服务,请稍等..."
  117. script{
  118. try{
  119. bat "call ${env.PROJECT_FOLDER}\\start.bat"
  120. sleep(time:5, unit:"SECONDS")
  121. timeout(time: 15, unit: 'SECONDS'){
  122. bat "${env.GIT_HOME}\\usr\\bin\\tail -f ${PROJECT_LOG_FOLDER}\\info.log"
  123. }
  124. }catch(err){}
  125. }
  126. echo "启动服务完成!"
  127. }
  128. }
  129. }
  130. post{
  131. always {
  132. echo "always"
  133. }
  134. success {
  135. script {
  136. try{
  137. bat "taskkill /f /im tail.exe"
  138. }catch(err){}
  139. currentBuild.description = "构建成功!";
  140. }
  141. }
  142. failure {
  143. script {
  144. currentBuild.description = "构建失败!";
  145. }
  146. }
  147. aborted {
  148. script {
  149. currentBuild.description = "构建取消!";
  150. }
  151. }
  152. }
  153. }