Jenkinsfile 5.2 KB

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