Jenkinsfile 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. // 所有脚本命令包含在pipeline{}中
  2. pipeline {
  3. // 指定任务在哪个节点执行(Jenkins支持分布式)
  4. agent any
  5. // 配置全局环境,指定变量名=变量值信息
  6. // environment{
  7. // host = '172.17.1.22'
  8. // }
  9. options{
  10. disableConcurrentBuilds()
  11. }
  12. parameters {
  13. booleanParam(name: 'auto_run_docker_nginx_build_job', defaultValue: false, description: '自动运行docker构建任务')
  14. booleanParam(name: 'auto_run_docker_nginx_pull_job', defaultValue: false, description: '自动运行docker发布任务')
  15. }
  16. triggers {
  17. GenericTrigger(
  18. genericVariables: [
  19. [key: 'ref', value: '$.ref']
  20. ],
  21. causeString: 'Triggered on $ref',
  22. token: 'android-cloud-h5',
  23. tokenCredentialId: '',
  24. silentResponse: false,
  25. printPostContent: true,
  26. printContributedVariables: true,
  27. regexpFilterExpression: 'refs/heads/' + env.BRANCH_NAME,
  28. regexpFilterText: '$ref'
  29. )
  30. }
  31. // 存放所有任务的合集
  32. stages {
  33. // 实现任务的具体流程
  34. stage('初始化构建环境') {
  35. steps {
  36. echo "env.ref: ${env.ref}"
  37. echo "自动运行docker构建任务: ${params.auto_run_docker_nginx_build_job}"
  38. echo "自动运行docker发布任务: ${params.auto_run_docker_nginx_pull_job}"
  39. // XXX: 此处需注意类型
  40. // params.auto_run_docker_nginx_build_job === false
  41. // env.auto_run_docker_nginx_build_job === "false"
  42. // script {
  43. // if (env.auto_run_docker_nginx_build_job) {
  44. // echo "env.auto_run_docker_nginx_build_job == true"
  45. // }
  46. // if (params.auto_run_docker_nginx_build_job) {
  47. // echo "params.auto_run_docker_nginx_build_job == true"
  48. // }
  49. // if (auto_run_docker_nginx_build_job) {
  50. // echo "auto_run_docker_nginx_build_job == true"
  51. // }
  52. // }
  53. // echo "params.auto_run_docker_nginx_pull_job: ${params.auto_run_docker_nginx_pull_job}"
  54. // echo 'env.BRANCH_NAME: ' + env.BRANCH_NAME
  55. // echo 'env.BUILD_NUMBER: ' + env.BUILD_NUMBER
  56. // echo 'env.BUILD_ID: ' + env.BUILD_ID
  57. // echo 'env.BUILD_DISPLAY_NAME: ' + env.BUILD_DISPLAY_NAME
  58. // echo 'env.JOB_NAME: ' + env.JOB_NAME
  59. // echo 'env.JOB_BASE_NAME: ' + env.JOB_BASE_NAME
  60. // echo 'env.BUILD_TAG: ' + env.BUILD_TAG
  61. nodejs('v16') {
  62. sh '''
  63. node -v
  64. npm -v
  65. npm install
  66. '''
  67. }
  68. }
  69. }
  70. stage('构建项目') {
  71. steps {
  72. script {
  73. // if (env.TAG_NAME) {
  74. // nodejs('v16') {
  75. // sh 'npm run build:prod'
  76. // }
  77. // } else
  78. if (env.BRANCH_NAME == 'master') {
  79. nodejs('v16') {
  80. sh 'npm run build:prod'
  81. }
  82. } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) {
  83. nodejs('v16') {
  84. sh 'npm run build:uat'
  85. }
  86. } else {
  87. nodejs('v16') {
  88. sh 'npm run build:test'
  89. }
  90. }
  91. }
  92. }
  93. }
  94. stage('构建docker镜像') {
  95. when {
  96. allOf {
  97. expression { return params.auto_run_docker_nginx_build_job }
  98. anyOf {
  99. branch "develop"
  100. // branch 'uat'
  101. branch "master"
  102. branch "release/*"
  103. // expression { BRANCH_NAME ==~ /^(release\/.+)$/ }
  104. }
  105. }
  106. }
  107. environment {
  108. BUILD_DOCKER_JOB = "cloud_build_docker_nginx/test"
  109. }
  110. steps {
  111. echo '开始构建docker镜像'
  112. script {
  113. if (env.BRANCH_NAME == "master") {
  114. env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/prod"
  115. } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) {
  116. env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/uat"
  117. } else {
  118. env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/test"
  119. }
  120. }
  121. echo "build job: ${env.BUILD_DOCKER_JOB}"
  122. build job: env.BUILD_DOCKER_JOB, parameters: [string(name: 'version', value: env.BUILD_TAG), extendedChoice(name: 'service', value: 'manage_H5'), booleanParam(name: 'auto_run_docker_nginx_pull_job', value: false), string(name: 'manage_H5_workspace', value: env.WORKSPACE)]
  123. }
  124. }
  125. stage('发布docker镜像') {
  126. when {
  127. allOf {
  128. expression { return params.auto_run_docker_nginx_build_job }
  129. expression { return params.auto_run_docker_nginx_pull_job }
  130. anyOf {
  131. branch 'develop'
  132. // branch 'uat'
  133. // branch 'master'
  134. // expression { BRANCH_NAME ==~ /^(release\/.+)$/ }
  135. }
  136. }
  137. }
  138. environment {
  139. PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  140. }
  141. steps {
  142. echo '开始发布docker镜像'
  143. // script {
  144. // if ( env.BRANCH_NAME == 'master' ) {
  145. // env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  146. // } else if ( env.BRANCH_NAME == 'uat' ) {
  147. // env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  148. // } else {
  149. // env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  150. // }
  151. // }
  152. echo "build job: ${env.PULL_DOCKER_JOB}"
  153. build job: env.PULL_DOCKER_JOB, parameters: [extendedChoice(name: 'service', value: 'cloud-nginx'), string(name: 'version', value: env.BUILD_TAG), string(name: 'replicas', value: '3'), string(name: 'memory', value: '2G'), string(name: 'cpu', value: '2')]
  154. }
  155. }
  156. }
  157. }