Jenkinsfile 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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.BRANCH_NAME: ' + env.BRANCH_NAME
  37. // echo 'env.BUILD_NUMBER: ' + env.BUILD_NUMBER
  38. // echo 'env.BUILD_ID: ' + env.BUILD_ID
  39. // echo 'env.BUILD_DISPLAY_NAME: ' + env.BUILD_DISPLAY_NAME
  40. // echo 'env.JOB_NAME: ' + env.JOB_NAME
  41. // echo 'env.JOB_BASE_NAME: ' + env.JOB_BASE_NAME
  42. // echo 'env.BUILD_TAG: ' + env.BUILD_TAG
  43. nodejs('v16') {
  44. sh '''
  45. node -v
  46. npm -v
  47. npm install
  48. '''
  49. }
  50. }
  51. }
  52. stage('构建项目') {
  53. steps {
  54. script {
  55. // if (env.TAG_NAME) {
  56. // nodejs('v16') {
  57. // sh 'npm run build:prod'
  58. // }
  59. // } else
  60. if (env.BRANCH_NAME == 'master') {
  61. nodejs('v16') {
  62. sh 'npm run build:prod'
  63. }
  64. } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) {
  65. nodejs('v16') {
  66. sh 'npm run build:uat'
  67. }
  68. } else {
  69. nodejs('v16') {
  70. sh 'npm run build:test'
  71. }
  72. }
  73. }
  74. }
  75. }
  76. stage('构建docker镜像') {
  77. when {
  78. allOf {
  79. anyOf {
  80. branch 'develop'
  81. // branch 'uat'
  82. branch 'master'
  83. expression { BRANCH_NAME ==~ /^(release\/.+)$/ }
  84. }
  85. expression { env.auto_run_docker_nginx_build_job }
  86. }
  87. }
  88. environment {
  89. BUILD_DOCKER_JOB = 'cloud_build_docker_nginx/test'
  90. }
  91. steps {
  92. // echo '开始构建docker镜像'
  93. script {
  94. if (env.BRANCH_NAME == 'master') {
  95. env.BUILD_DOCKER_JOB = 'cloud_build_docker_nginx/prod'
  96. } else if (env.BRANCH_NAME ==~ /^(release\/.+)$/) {
  97. env.BUILD_DOCKER_JOB = 'cloud_build_docker_nginx/uat'
  98. } else {
  99. env.BUILD_DOCKER_JOB = 'cloud_build_docker_nginx/test'
  100. }
  101. }
  102. 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)]
  103. }
  104. }
  105. stage('发布docker镜像') {
  106. when {
  107. allOf {
  108. anyOf {
  109. branch 'develop'
  110. // branch 'uat'
  111. // branch 'master'
  112. // expression { BRANCH_NAME ==~ /^(release\/.+)$/ }
  113. }
  114. expression { env.auto_run_docker_nginx_build_job }
  115. expression { env.auto_run_docker_nginx_pull_job }
  116. }
  117. }
  118. environment {
  119. PUBLISH_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  120. }
  121. steps {
  122. // echo '开始构建docker镜像'
  123. // script {
  124. // if ( env.BRANCH_NAME == 'master' ) {
  125. // env.PUBLISH_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  126. // } else if ( env.BRANCH_NAME == 'uat' ) {
  127. // env.PUBLISH_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  128. // } else {
  129. // env.PUBLISH_DOCKER_JOB = 'cloud_publish_docker_powerful_test'
  130. // }
  131. // }
  132. build job: env.PUBLISH_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')]
  133. }
  134. }
  135. }
  136. }