Jenkinsfile 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. script {
  38. if (env.ref) {
  39. echo "任务来源git Webhooks开启自动构建并发布docker"
  40. env.auto_run_docker_nginx_build_job = "true"
  41. env.auto_run_docker_nginx_pull_job = "true"
  42. }
  43. }
  44. echo "自动运行docker构建任务: ${env.auto_run_docker_nginx_build_job}"
  45. echo "自动运行docker发布任务: ${env.auto_run_docker_nginx_pull_job}"
  46. // XXX: 此处需注意类型
  47. // params.auto_run_docker_nginx_build_job === false
  48. // env.auto_run_docker_nginx_build_job === "false"
  49. // echo "params.auto_run_docker_nginx_pull_job: ${params.auto_run_docker_nginx_pull_job}"
  50. // echo 'env.BRANCH_NAME: ' + env.BRANCH_NAME
  51. // echo 'env.BUILD_NUMBER: ' + env.BUILD_NUMBER
  52. // echo 'env.BUILD_ID: ' + env.BUILD_ID
  53. // echo 'env.BUILD_DISPLAY_NAME: ' + env.BUILD_DISPLAY_NAME
  54. // echo 'env.JOB_NAME: ' + env.JOB_NAME
  55. // echo 'env.JOB_BASE_NAME: ' + env.JOB_BASE_NAME
  56. // echo 'env.BUILD_TAG: ' + env.BUILD_TAG
  57. nodejs('v16') {
  58. sh '''
  59. node -v
  60. npm -v
  61. npm install
  62. '''
  63. }
  64. }
  65. }
  66. stage('构建项目') {
  67. steps {
  68. script {
  69. // if (env.TAG_NAME) {
  70. // nodejs('v16') {
  71. // sh 'npm run build:prod'
  72. // }
  73. // } else
  74. if (env.BRANCH_NAME == 'master') {
  75. nodejs('v16') {
  76. sh 'npm run build:prod'
  77. }
  78. } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) {
  79. nodejs('v16') {
  80. sh 'npm run build:uat'
  81. }
  82. } else {
  83. nodejs('v16') {
  84. sh 'npm run build:test'
  85. }
  86. }
  87. }
  88. }
  89. }
  90. stage('构建docker镜像') {
  91. when {
  92. allOf {
  93. expression { env.auto_run_docker_nginx_build_job == "true" }
  94. anyOf {
  95. branch "develop"
  96. // branch 'uat'
  97. // branch "master"
  98. // branch "release/*"
  99. // expression { BRANCH_NAME ==~ /^(release\/.+)$/ }
  100. }
  101. }
  102. }
  103. environment {
  104. BUILD_DOCKER_JOB = "cloud_build_docker_nginx/test"
  105. }
  106. steps {
  107. echo '开始构建docker镜像'
  108. script {
  109. if (env.BRANCH_NAME == "master") {
  110. env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/prod"
  111. } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) {
  112. env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/uat"
  113. } else {
  114. env.BUILD_DOCKER_JOB = "cloud_build_docker_nginx/test"
  115. }
  116. }
  117. echo "build job: ${env.BUILD_DOCKER_JOB}"
  118. 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)]
  119. }
  120. }
  121. stage('发布docker镜像') {
  122. when {
  123. allOf {
  124. expression { env.auto_run_docker_nginx_build_job == "true" }
  125. expression { env.auto_run_docker_nginx_pull_job == "true" }
  126. anyOf {
  127. branch 'develop'
  128. // branch 'uat'
  129. // branch 'master'
  130. // expression { BRANCH_NAME ==~ /^(release\/.+)$/ }
  131. }
  132. }
  133. }
  134. environment {
  135. PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  136. }
  137. steps {
  138. echo '开始发布docker镜像'
  139. script {
  140. if ( env.BRANCH_NAME == 'master' ) {
  141. // env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  142. } else if ( env.BRANCH_NAME == 'uat' ) {
  143. env.PULL_DOCKER_JOB = 'cloud_publish_docker_pre'
  144. } else {
  145. env.PULL_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  146. }
  147. }
  148. echo "build job: ${env.PULL_DOCKER_JOB}"
  149. 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')]
  150. }
  151. }
  152. }
  153. }