Jenkinsfile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. pipeline {
  2. agent {
  3. node {
  4. label 'maven'
  5. }
  6. }
  7. parameters {
  8. string(name:'TAG_NAME',defaultValue: '',description:'')
  9. }
  10. environment {
  11. // DockerHub 凭证 ID(登录您的 DockerHub)
  12. DOCKER_CREDENTIAL_ID = 'dockerhub-id'
  13. // GitHub 凭证 ID (推送 tag 到 GitHub 仓库)
  14. GITHUB_CREDENTIAL_ID = 'github-id'
  15. // kubeconfig 凭证 ID (访问接入正在运行的 Kubernetes 集群)
  16. KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
  17. // 镜像的推送
  18. REGISTRY = 'docker.io'
  19. // DockerHub 账号名
  20. DOCKERHUB_NAMESPACE = 'docker_username'
  21. // GitHub 账号名
  22. GITHUB_ACCOUNT = 'https://gitee.com/zhijiantianya/ruoyi-vue-pro'
  23. // 应用名称
  24. APP_NAME = 'yudao-admin-server'
  25. }
  26. stages {
  27. stage ('checkout scm') {
  28. steps {
  29. checkout(scm)
  30. }
  31. }
  32. stage ('unit test') {
  33. steps {
  34. container ('maven') {
  35. sh 'mvn clean -gs `pwd`/configuration/settings.xml test'
  36. }
  37. }
  38. }
  39. stage ('build & push') {
  40. steps {
  41. container ('maven') {
  42. sh 'mvn -Dmaven.test.skip=true -gs `pwd`/configuration/settings.xml clean package'
  43. sh 'docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .'
  44. withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$DOCKER_CREDENTIAL_ID" ,)]) {
  45. sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
  46. sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER'
  47. }
  48. }
  49. }
  50. }
  51. stage('push latest'){
  52. when{
  53. branch 'master'
  54. }
  55. steps{
  56. container ('maven') {
  57. sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
  58. sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
  59. }
  60. }
  61. }
  62. stage('deploy to dev') {
  63. when{
  64. branch 'master'
  65. }
  66. steps {
  67. input(id: 'deploy-to-dev', message: 'deploy to dev?')
  68. kubernetesDeploy(configs: 'deploy/dev-ol/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")
  69. }
  70. }
  71. stage('push with tag'){
  72. when{
  73. expression{
  74. return params.TAG_NAME =~ /v.*/
  75. }
  76. }
  77. steps {
  78. container ('maven') {
  79. input(id: 'release-image-with-tag', message: 'release image with tag?')
  80. withCredentials([usernamePassword(credentialsId: "$GITHUB_CREDENTIAL_ID", passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
  81. sh 'git config --global user.email "kubesphere@yunify.com" '
  82. sh 'git config --global user.name "kubesphere" '
  83. sh 'git tag -a $TAG_NAME -m "$TAG_NAME" '
  84. sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@github.com/$GITHUB_ACCOUNT/devops-java-sample.git --tags --ipv4'
  85. }
  86. sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME '
  87. sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME '
  88. }
  89. }
  90. }
  91. stage('deploy to production') {
  92. when{
  93. expression{
  94. return params.TAG_NAME =~ /v.*/
  95. }
  96. }
  97. steps {
  98. input(id: 'deploy-to-production', message: 'deploy to production?')
  99. kubernetesDeploy(configs: 'deploy/prod-ol/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")
  100. }
  101. }
  102. }
  103. }