.gitlab-ci.yml 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # java 项目的CI/CD过程分为4个阶段,测试->编译源码->编译镜像->部署镜像
  2. stages:
  3. - test
  4. - build_src
  5. - build_image
  6. - deploy
  7. # 编译全局变量定义
  8. variables:
  9. # Docker私有仓库地址
  10. REGISTRY_URL: "registry.c2cloud.cn"
  11. # Docker私有仓库地址
  12. TENANT: "unicom"
  13. # 镜像名称(一般直接使用项目名称)
  14. # FIXME: 起好名字
  15. #PROJECT_NAME: "active-process"
  16. PROJECT_NAME: "active-processclass2"
  17. REGISTRY_USERNAME: "dzqdsybzh"
  18. REGISTRY_PASSWORD: "DIVynd903"
  19. # 所有分支都要做单元测试
  20. unit_test:
  21. stage: test
  22. # 使用带有maven标签的runner来执行编译
  23. tags:
  24. - maven
  25. script:
  26. - export LANGUAGE="en_US.utf8"
  27. - export LANG="en_US.utf8"
  28. # 编译release分支的镜像,release分支是用于发布的分支,系统集成测试在这个分支做
  29. # TODO 编译分支的镜像需要手动清理
  30. build_release_docker_images:
  31. stage: build_image
  32. tags:
  33. - docker
  34. services:
  35. - docker:dind
  36. before_script:
  37. - docker login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD $REGISTRY_URL
  38. script:
  39. # 使用编译id作为镜像tag,而不是分支名称,避免重复导致仓库中有很多无id的镜像
  40. # FIXME:根据项目目录结构配置
  41. - docker build -t $REGISTRY_URL/$TENANT/$PROJECT_NAME:release.$CI_BUILD_ID .
  42. - docker push $REGISTRY_URL/$TENANT/$PROJECT_NAME:release.$CI_BUILD_ID
  43. only:
  44. - /^release/.*$/
  45. # 编译正式版本镜像,只有在打tag时触发,会自动生成docker镜像并push到私服,镜像的tag即git的tag名称
  46. build_tag_docker_images:
  47. stage: build_image
  48. tags:
  49. - docker
  50. services:
  51. - docker:dind
  52. before_script:
  53. - docker login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD $REGISTRY_URL
  54. script:
  55. # tag名称中不能包含/
  56. # FIXME:根据项目目录结构配置
  57. - docker build -t $REGISTRY_URL/$TENANT/$PROJECT_NAME:$CI_BUILD_TAG .
  58. - docker push $REGISTRY_URL/$TENANT/$PROJECT_NAME:$CI_BUILD_TAG
  59. only:
  60. - tags