新增版本控制

This commit is contained in:
2026-07-01 16:20:26 +08:00
parent 5dbfdec2b5
commit 9f6a5afae2
15 changed files with 3283 additions and 0 deletions

312
drone_ok.yml Normal file
View File

@@ -0,0 +1,312 @@
kind: pipeline
type: exec
name: CI-building
clone:
disable: true
environment:
GOOS: linux
GOARCH: amd64
GOPROXY: https://proxy.golang.com.cn,direct
GONOPROXY: gitea.bluettipower.com
GOPRIVATE: gitea.bluettipower.com
steps:
- name: CI
environment:
GOPROXY: https://proxy.golang.com.cn,direct
GONOPROXY: gitea.bluettipower.com
GOPRIVATE: gitea.bluettipower.com
CGO_ENABLED: 0
GOPATH: /root/go
PROJECT_API_NAME:
from_secret: PROJECT_API_NAME
PROJECT_RPC_NAME:
from_secret: PROJECT_RPC_NAME
DOMAIN_PREFIX:
from_secret: STAGE_DOMAIN_PREFIX
command_timeout: 360s
commands:
- pwd
- git config --global url."https://alanal:Alanal126com@gitea.bluettipower.com".insteadOf "https://gitea.bluettipower.com"
- cd /bluetti/app_project
- |
if [ ! -d /bluetti/app_project/${DRONE_REPO_NAME} ]; then
git clone https://gitea.bluettipower.com/bluettipower/${DRONE_REPO_NAME}.git ${DRONE_REPO_NAME}
fi
- cd /bluetti/app_project/${DRONE_REPO_NAME}
- git checkout -- .
- git pull
- git switch ${DRONE_COMMIT_BRANCH}
#- git branch --set-upstream-to=origin/${DRONE_COMMIT_BRANCH} ${DRONE_COMMIT_BRANCH}
- git pull https://pywee:$${GIT_PWD}@gitea.bluettipower.com/Bluettipower/${DRONE_REPO_NAME}.git
- export PATH=$PATH:/usr/local/go/bin
- go env
- go version
- go mod tidy
- go build -ldflags="-s -w" -o ./app api/*.go
- docker build -f api/Dockerfile -t $${PROJECT_API_NAME}:latest .
# - docker tag $${PROJECT_API_NAME}:latest 127.0.0.1:8091/bluetti/$${PROJECT_API_NAME}:${DRONE_COMMIT:0:10}
- docker login harbor.bluettipower.com -u bluetti -p cjJXBbkHlvVWH2B
# - docker push 127.0.0.1:8091/bluetti/$${PROJECT_API_NAME}:${DRONE_COMMIT:0:10}
- docker tag $${PROJECT_API_NAME}:latest harbor.bluettipower.com/bluetti/$${PROJECT_API_NAME}:${DRONE_COMMIT:0:10}
- docker push harbor.bluettipower.com/bluetti/$${PROJECT_API_NAME}:${DRONE_COMMIT:0:10}
- echo "API构建完成, 你可以通过 docker pull harbor.bluettipower.com/bluetti/$PROJECT_API_NAME:${DRONE_COMMIT:0:10} 获取镜像"
- |
if [ -d "rpc" ]; then
go build -ldflags="-s -w" -o ./rpc_app rpc/*.go
docker build -f rpc/Dockerfile -t $${PROJECT_RPC_NAME}:latest .
docker tag $${PROJECT_RPC_NAME}:latest harbor.bluettipower.com/bluetti/$${PROJECT_RPC_NAME}:${DRONE_COMMIT:0:10}
docker push harbor.bluettipower.com/bluetti/$${PROJECT_RPC_NAME}:${DRONE_COMMIT:0:10}
rm -rf ./rpc_app
echo "RPC构建完成, 你可以通过 docker pull harbor.bluettipower.com/bluetti/$${PROJECT_RPC_NAME}:${DRONE_COMMIT:0:10} 获取镜像"
fi
- name: stage-publish
environment:
PROJECT_API_NAME:
from_secret: PROJECT_API_NAME
PROJECT_RPC_NAME:
from_secret: PROJECT_RPC_NAME
DOMAIN_PREFIX:
from_secret: STAGE_DOMAIN_PREFIX
when:
branch:
- feature/*
- develop
commands:
- echo 1 $DOMAIN_PREFIX 2
- cd /bluetti/app_project/${DRONE_REPO_NAME}
- docker compose down
- export DOMAIN_PREFIX=$DOMAIN_PREFIX
- export GIT_COMMIT=${DRONE_COMMIT:0:10}
- export ENV=""
- |
if [ -d "rpc" ]; then
echo $PROJECT_RPC_NAME 12345
docker tag $PROJECT_RPC_NAME:latest harbor.bluettipower.com/bluetti/$PROJECT_RPC_NAME:${DRONE_COMMIT:0:10}
docker push harbor.bluettipower.com/bluetti/$PROJECT_RPC_NAME:${DRONE_COMMIT:0:10}
docker images | grep $${PROJECT_RPC_NAME} | awk '{print $3}' | xargs docker rmi -f
fi
# - docker images | grep $${PROJECT_API_NAME} | awk '{print $3}' | xargs docker rmi -f
- docker compose up -d
volumes:
- name: docker-sock
host:
path: /var/run/docker.sock
trigger:
branch:
- develop
- master
- feature/*
event:
include:
- push
- merge_request
---
kind: pipeline
type: docker
name: CI-Master-publish
clone:
disable: true
depends_on:
- CI-building
steps:
- name: prod-publish
image: appleboy/drone-ssh
environment:
PROD_DOMAIN_PREFIX:
from_secret: PROD_DOMAIN_PREFIX
PROJECT_API_NAME:
from_secret: PROJECT_API_NAME
PROJECT_RPC_NAME:
from_secret: PROJECT_RPC_NAME
settings:
host:
from_secret: PROD_HOST_IP
username:
from_secret: PROD_HOST_NAME
password:
from_secret: PROD_HOST_PWD
port: 22
command_timeout: 360s
envs: [PROJECT_API_NAME,PROD_DOMAIN_PREFIX,PROJECT_RPC_NAME]
script:
- bash
- git config --global url."https://alanal:Alanal126com@gitea.bluettipower.com".insteadOf "https://gitea.bluettipower.com"
- cd /bluetti/app_project
- |
if [ ! -d /bluetti/app_project/${DRONE_REPO_NAME} ]; then
git clone https://gitea.bluettipower.com/bluettipower/${DRONE_REPO_NAME}.git ${DRONE_REPO_NAME}
fi
- cd /bluetti/app_project/${DRONE_REPO_NAME}
- git pull https://pywee:$${GIT_PWD}@gitea.bluettipower.com/Bluettipower/${DRONE_REPO_NAME}.git
# - docker login 127.0.0.1:8091 -u admin -p HarborBluetti
- git pull origin
- git branch
- git fetch origin
- git checkout master
- export ENV="-prod"
- export DOMAIN_PREFIX=$${PROD_DOMAIN_PREFIX}
- export GIT_COMMIT=${DRONE_COMMIT:0:10}
# - docker compose down
# - docker images | grep $${PROJECT_API_NAME} | awk '{print $3}' | xargs docker rmi -f
# - docker images | grep $${PROJECT_RPC_NAME} | awk '{print $3}' | xargs docker rmi -f
- docker pull harbor.bluettipower.com/bluetti/$PROJECT_API_NAME:${DRONE_COMMIT:0:10}
- |
if [ -d "rpc" ]; then
docker pull harbor.bluettipower.com/bluetti/$PROJECT_RPC_NAME:${DRONE_COMMIT:0:10}
fi
- docker compose up -d
retry:
limit: 2
delay: 360s
volumes:
- name: docker-sock
host:
path: /var/run/docker.sock
trigger:
branch:
- master
event:
include:
- promote
---
kind: pipeline
type: docker
name: promote/rollback
steps:
- name: stage-rollback
image: appleboy/drone-ssh
environment:
PROJECT_API_NAME:
from_secret: PROJECT_API_NAME
PROJECT_RPC_NAME:
from_secret: PROJECT_RPC_NAME
DOMAIN_PREFIX:
from_secret: DOMAIN_PREFIX
settings:
host:
from_secret: STAGE_HOST_IP
username:
from_secret: STAGE_HOST_NAME
password:
from_secret: STAGE_HOST_PWD
port: 22
command_timeout: 300s
envs: [PROJECT_API_NAME,STAGE_DOMAIN_PREFIX,PROJECT_RPC_NAME]
script:
- cd /bluetti/app_project/${DRONE_REPO_NAME}
- export GIT_COMMIT=${DRONE_COMMIT:0:10}
- export DOMAIN_PREFIX=$${STAGE_DOMAIN_PREFIX}
- export ENV=""
- docker compose down
- docker compose up -d
- echo "版本已经更新到 ${DRONE_COMMIT:0:10}, ${DRONE_COMMIT_MESSAGE}"
when:
branch:
- develop
- name: prod-rollback
image: appleboy/drone-ssh
environment:
PROJECT_API_NAME:
from_secret: PROJECT_API_NAME
PROJECT_RPC_NAME:
from_secret: PROJECT_RPC_NAME
PROD_DOMAIN_PREFIX:
from_secret: PROD_DOMAIN_PREFIX
settings:
host:
from_secret: PROD_HOST_IP
username:
from_secret: PROD_HOST_NAME
password:
from_secret: PROD_HOST_PWD
port: 22
command_timeout: 300s
envs: [PROJECT_API_NAME,PROD_DOMAIN_PREFIX,PROJECT_RPC_NAME]
script:
- cd /bluetti/app_project/${DRONE_REPO_NAME}
- export GIT_COMMIT=${DRONE_COMMIT:0:10}
- export DOMAIN_PREFIX=$${PROD_DOMAIN_PREFIX}
- export ENV="-prod"
- docker compose down
- docker compose up -d
- echo "版本已经更新到 ${DRONE_COMMIT:0:10}, ${DRONE_COMMIT_MESSAGE}"
when:
branch:
- master
volumes:
- name: docker-sock
host:
path: /var/run/docker.sock
trigger:
event:
- rollback
---
kind: pipeline
type: docker
name: CI-notify
depends_on:
- CI-building
clone:
disable: true
steps:
- name: notify
image: drillster/drone-email
settings:
host: smtp.qiye.aliyun.com
username: alanal@poweroak.com
password: KRLdCsdDGrI8Uko
port: 465
from: alanal@poweroak.com
when:
status:
- failure
- name: send-dingtalk-notification
image: lddsb/drone-dingtalk-message
volumes:
- name: dingtalk-tpl
path: /data
settings:
token: 95b118a31f95c328b1c5f7f52622997d77b69da9d393b0700fc8eb33ed551713
secret: SECb355ff4ba5b05b5325d4c67d3f6637c75613668c248ad9cc97355fe266fe1b6a
# token: 8a47605751760b1b1af660e67c2f39bdf9f83c672a18ab872412e99c78b0e5c0
# secret: SEC0dfa30e4e8acfae69e7bf42b19c2feff5d302d2667de3aa4ba8cff46e867758a
type: markdown
debug: false
tpl: /data/dingtalk_${DRONE_BUILD_EVENT}.tpl
tips_title: 后端上线通知
when:
status:
- success
event:
- promote
- rollback
branch:
# - develop
- master
volumes:
- name: dingtalk-tpl
host:
path: /bluetti/drone/data