.drone.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #####################################################################################################################################################################
  2. #####################################################################################################################################################################
  3. # 测试环境打包
  4. # 1.打包构建test-omega-router-server
  5. kind: pipeline
  6. type: docker
  7. name: test-omega-router-server
  8. volumes: # 声明数据卷
  9. - name: build-artifacts
  10. host:
  11. path: /home/ABServer/drone/webroot/test-omega-router-server
  12. - name: dockerfile-source
  13. host:
  14. path: /home/ABServer/drone/config/omega-dockerfile
  15. - name: docker-socket
  16. host:
  17. path: /var/run/docker.sock
  18. - name: timezone
  19. host:
  20. path: /etc/localtime
  21. - name: delpoyment
  22. host:
  23. path: /home/ABServer/drone/config/shell
  24. # 启用代码拉取
  25. clone:
  26. disable: false
  27. steps:
  28. # 阶段1: .NET SDK 构建项目
  29. - name: build-project
  30. image: mcr.microsoft.com/dotnet/sdk:7.0
  31. pull: if-not-exists
  32. volumes: # 挂载数据卷
  33. # 共享卷:最终产物存放路径
  34. - name: build-artifacts
  35. path: /webroot
  36. # 挂载 dockerfile 目录
  37. - name: dockerfile-source
  38. path: /dockerfiles
  39. working_dir: /drone/src
  40. commands: # 执行命令
  41. # 1. 清空共享卷旧文件
  42. - rm -rf /webroot/*
  43. # 2. 配置 NuGet 国内源
  44. - mkdir -p ~/.nuget/NuGet
  45. - echo '<?xml version="1.0" encoding="utf-8"?><configuration><packageSources><add key="huaweicloud" value="https://repo.huaweicloud.com/repository/nuget/v3/index.json" /></packageSources></configuration>' > ~/.nuget/NuGet/NuGet.Config
  46. # 3. 编译项目
  47. - dotnet publish -c Release -o ./publish-output
  48. # 4. 复制构建产物到共享目录
  49. - cp -rv ./publish-output/* /webroot/
  50. - cp -rf /dockerfiles/template-test.dockerfile /webroot/Dockerfile
  51. - cp -rf /dockerfiles/fonts /webroot/fonts/
  52. - sed -i 's/{ImageName}/OmegaRouter/g' /webroot/Dockerfile
  53. # 5. 列出共享目录文件
  54. - ls -laR /webroot
  55. # 阶段2: Docker构建并推送镜像
  56. - name: docker-build-push
  57. image: docker:24.0-cli
  58. depends_on: [ build-project ]
  59. pull: if-not-exists
  60. volumes:
  61. - name: build-artifacts
  62. path: /webroot
  63. - name: docker-socket
  64. path: /var/run/docker.sock
  65. - name: timezone
  66. path: /etc/localtime
  67. - name: delpoyment
  68. path: /home
  69. environment:
  70. HARBOR_USER:
  71. from_secret: harbor_robot
  72. HARBOR_PASS:
  73. from_secret: harbor_token
  74. commands:
  75. - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com
  76. - cd /webroot
  77. - TAG=test-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10}
  78. - echo $TAG > /home/TAG.txt
  79. - docker build -t "harbor.kexiaoshuang.com/test/omega-router:$TAG" .
  80. - docker push "harbor.kexiaoshuang.com/test/omega-router:$TAG"
  81. - docker rmi "harbor.kexiaoshuang.com/test/omega-router:$TAG"
  82. # 阶段四:测试环境部署服务
  83. - name: trigger-deploy
  84. image: curlimages/curl:latest
  85. depends_on: [ docker-build-push ]
  86. volumes:
  87. - name: delpoyment
  88. path: /shared
  89. commands:
  90. - TAG=$(cat /shared/TAG.txt)
  91. - echo "TAG=$TAG"
  92. - cd /shared
  93. - sh /shared/trigger-deploy-omega.sh $TAG omega-router omega omega
  94. trigger:
  95. branch: [ develop ]
  96. event: [ push ]