| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- ###################################################################################################################################################
- # #
- # #
- # #
- # #
- ###################################################################################################################################################
- # 生产环境配置
- # 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 '<?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
-
- # 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 '<?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
-
- # 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 ]
|