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