################################################################################################################################################### # # # # # # # # ################################################################################################################################################### # 生产环境配置 # 1.打包构建release-omega-project-server kind: pipeline type: docker name: release-omega-project-server volumes: # 声明数据卷 - name: build-artifacts host: path: /home/ABServer/drone/webroot/release-omega-project-server - name: dockerfile-source host: path: /home/ABServer/drone/config/omega-dockerfile - name: docker-socket host: path: /var/run/docker.sock - name: timezone host: path: /etc/localtime - name: delpoyment host: path: /home/ABServer/drone/config/shell # 启用代码拉取 clone: disable: false steps: # 阶段1: .NET SDK 构建项目 - name: build-project image: mcr.microsoft.com/dotnet/sdk:7.0 pull: if-not-exists volumes: # 挂载数据卷 # 共享卷:最终产物存放路径 - name: build-artifacts path: /context # 挂载 dockerfile 目录 - name: dockerfile-source path: /dockerfiles working_dir: /drone/src commands: # 执行命令 # 1. 清空共享卷旧文件 - rm -rf /context/* # 2. 配置 NuGet 国内源 - mkdir -p ~/.nuget/NuGet - echo '' > ~/.nuget/NuGet/NuGet.Config # 3. 编译项目 - dotnet publish -c Release -o ./publish-output # 4. 复制构建产物到共享目录 - cp -rv ./publish-output/* /context/ - cp -rf /dockerfiles/template-example.dockerfile /context/Dockerfile - cp -rf /dockerfiles/fonts /context/fonts/ - sed -i 's/{ImageName}/OmegaProject/g' /context/Dockerfile # 5. 列出共享目录文件 - ls -laR /context # 阶段2: Docker构建并推送镜像 - name: docker-build-push image: docker:24.0-cli depends_on: [ build-project ] pull: if-not-exists volumes: - name: build-artifacts path: /context - name: docker-socket path: /var/run/docker.sock - name: timezone path: /etc/localtime - name: delpoyment path: /home environment: HARBOR_USER: from_secret: harbor_robot HARBOR_PASS: from_secret: harbor_token commands: - cd /context - TAG=prod-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10} - TAG_FILE="/home/${DRONE_BUILD_NUMBER}.txt" - echo "$TAG" > "$TAG_FILE" - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com - docker build -t "harbor.kexiaoshuang.com/omega/omega-project:$TAG" . - docker push "harbor.kexiaoshuang.com/omega/omega-project:$TAG" - docker rmi "harbor.kexiaoshuang.com/omega/omega-project:$TAG" - echo "TAG_FILE=$TAG_FILE" - cat "$TAG_FILE" trigger: branch: [ release-omega-project-server ] event: [ push ] ################################################################################################################################################### # # # # # # # # ################################################################################################################################################### # 测试环境配置 # 1.打包构建test-omega-project-server --- kind: pipeline type: docker name: test-omega-project-server volumes: # 声明数据卷 - name: build-artifacts host: path: /home/ABServer/drone/webroot/test-omega-project-server - name: dockerfile-source host: path: /home/ABServer/drone/config/omega-dockerfile - name: docker-socket host: path: /var/run/docker.sock - name: timezone host: path: /etc/localtime - name: delpoyment host: path: /home/ABServer/drone/config/shell # 启用代码拉取 clone: disable: false steps: # 阶段1: .NET SDK 构建项目 - name: build-project image: mcr.microsoft.com/dotnet/sdk:7.0 pull: if-not-exists volumes: # 挂载数据卷 # 共享卷:最终产物存放路径 - name: build-artifacts path: /context # 挂载 dockerfile 目录 - name: dockerfile-source path: /dockerfiles working_dir: /drone/src commands: # 执行命令 # 1. 清空共享卷旧文件 - rm -rf /context/* # 2. 配置 NuGet 国内源 - mkdir -p ~/.nuget/NuGet - echo '' > ~/.nuget/NuGet/NuGet.Config # 3. 编译项目 - dotnet publish -c Release -o ./publish-output # 4. 复制构建产物到共享目录 - cp -rv ./publish-output/* /context/ - cp -rf /dockerfiles/template-example.dockerfile /context/Dockerfile - cp -rf /dockerfiles/fonts /context/fonts/ - sed -i 's/{ImageName}/OmegaProject/g' /context/Dockerfile # 5. 列出共享目录文件 - ls -laR /context # 阶段2: Docker构建并推送镜像 - name: docker-build-push image: docker:24.0-cli depends_on: [ build-project ] pull: if-not-exists volumes: - name: build-artifacts path: /context - name: docker-socket path: /var/run/docker.sock - name: timezone path: /etc/localtime - name: delpoyment path: /home environment: HARBOR_USER: from_secret: harbor_robot HARBOR_PASS: from_secret: harbor_token commands: - cd /context - TAG=test-$(date +%Y%m%d%H%M%S)-${DRONE_COMMIT_SHA:0:10} - TAG_FILE="/home/${DRONE_BUILD_NUMBER}.txt" - echo "$TAG" > "$TAG_FILE" - docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" harbor.kexiaoshuang.com - docker build -t "harbor.kexiaoshuang.com/test/omega-project:$TAG" . - docker push "harbor.kexiaoshuang.com/test/omega-project:$TAG" - docker rmi "harbor.kexiaoshuang.com/test/omega-project:$TAG" - echo "TAG_FILE=$TAG_FILE" - cat "$TAG_FILE" # 阶段四:测试环境部署服务 - name: trigger-deploy image: curlimages/curl:latest depends_on: [ docker-build-push ] volumes: - name: delpoyment path: /shared commands: - TAG_FILE="/shared/${DRONE_BUILD_NUMBER}.txt" - test -f "$TAG_FILE" - TAG=$(cat "$TAG_FILE") - echo "TAG=$TAG" - sh /shared/trigger-deploy-omega.sh $TAG omega-project omega omega trigger: branch: [ test-omega-project-server ] event: [ push ]