Jenkinsfile-copy 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. pipeline {
  2. agent any
  3. tools {
  4. maven 'Maven-3.8.5'
  5. jdk 'JDK8'
  6. }
  7. parameters {
  8. choice(name: 'ENV', choices: ['prod'], description: '部署环境')
  9. choice(name: 'SERVICE', choices: ['gateway', 'work', 'oa', 'authorization', 'admin', 'bi', 'crm', 'job', 'examine', 'hrm'], description: '选择要部署的微服务')
  10. }
  11. environment {
  12. DOCKER_REGISTRY = "registry.cn-shanghai.aliyuncs.com"
  13. DOCKER_NAMESPACE = "advich-group"
  14. DOCKER_REPO = "weichi-crm-${params.SERVICE}"
  15. DOCKER_IMAGE = "${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/${DOCKER_REPO}:latest"
  16. PROJECT_SERVICE_COMMON_NAME = "core"
  17. }
  18. stages {
  19. stage('拉取Git代码') {
  20. steps {
  21. checkout scmGit(branches: [[name: '${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'fb3553e7-6ea6-4f34-92a0-6ba34a71c5b5', url: 'https://git.dev.advichcloud.com/wangfan/weichi-crm-server.git']])
  22. }
  23. }
  24. stage('公共工程打包') {
  25. steps {
  26. script {
  27. echo '****************************** 公共工程打包 ******************************'
  28. sh """
  29. mvn -f ${PROJECT_SERVICE_COMMON_NAME} clean install -Dmaven.test.skip=true
  30. """
  31. }
  32. }
  33. }
  34. stage('微服务工程打包') {
  35. steps {
  36. script {
  37. echo '****************************** 微服务工程打包 ******************************'
  38. sh "mvn -f ${params.SERVICE} clean install -Dmaven.test.skip=true"
  39. }
  40. }
  41. }
  42. stage('Build and Push Docker Image') {
  43. steps {
  44. script {
  45. withCredentials([usernamePassword(
  46. credentialsId: '6ec7fc8d-859f-43ba-8ebc-337bedec055b',
  47. usernameVariable: 'REGISTRY_USERNAME',
  48. passwordVariable: 'REGISTRY_PASSWORD'
  49. )]) {
  50. sh """
  51. cd ${params.SERVICE}
  52. echo "\${REGISTRY_PASSWORD}" | docker login ${DOCKER_REGISTRY} -u \${REGISTRY_USERNAME} --password-stdin
  53. docker build -t ${DOCKER_IMAGE} .
  54. docker push ${DOCKER_IMAGE}
  55. """
  56. }
  57. }
  58. }
  59. }
  60. stage('Deploy to Server') {
  61. when {
  62. expression { return params.ENV == 'prod' }
  63. }
  64. steps {
  65. script {
  66. echo '****************************** 部署到服务器 ******************************'
  67. def DOCKER_REGISTRY = "${DOCKER_REGISTRY}"
  68. def DOCKER_NAMESPACE = "${DOCKER_NAMESPACE}"
  69. def DOCKER_REPO = "${DOCKER_REPO}"
  70. sshPublisher(publishers: [sshPublisherDesc(configName:'CRM(阿里云)', transfers: [sshTransfer(cleanRemote: false, excludes: '',
  71. execCommand: """
  72. docker login -u wangfan@1934160439855919 -p Initial0 ${DOCKER_REGISTRY}
  73. docker pull ${DOCKER_IMAGE}
  74. docker rm -f ${DOCKER_REPO} || true
  75. docker run -d --name ${DOCKER_REPO} ${DOCKER_IMAGE}
  76. """,
  77. execTimeout: 120000, flatten: false, makeEmptyDirs: false,
  78. noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '',
  79. remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')],
  80. usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose:
  81. false)])
  82. }
  83. }
  84. }
  85. stage('Clean Workspace') {
  86. steps {
  87. cleanWs()
  88. }
  89. }
  90. }
  91. }