ci: setup 2.5.0-PM branch CI/CD for team collaboration

- Update feat_cicd pipeline: fix uv mirrors config (align with cicd pipeline),
  add SSH deploy step to 114 server, trigger on 2.5.0-PM branch
- Add failure notification to Feishu webhook
- Modernize pre-commit hooks: replace flake8/yapf/isort with ruff
- Add .editorconfig for cross-IDE consistency
- Add PR template for collaboration workflow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
LineWalker
2026-04-10 18:34:38 +08:00
parent 9e4a8b7421
commit c71f9a45dd
4 changed files with 84 additions and 64 deletions
+30 -17
View File
@@ -197,41 +197,37 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
- git clone https://github.com/dataelement/bisheng.git .
- git checkout $DRONE_COMMIT
- name: set poetry
- name: set uv mirrors
pull: if-not-exists
image: golang
environment:
NEXUS_PUBLIC:
from_secret: NEXUS_PUBLIC
NEXUS_PUBLIC_PASSWORD:
from_secret: NEXUS_PUBLIC_PASSWORD
REPO:
from_secret: PY_NEXUS
PROXY:
from_secret: APT-GET
volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
volumes:
- name: bisheng-cache
path: /app/build/
commands:
- cd ./src/backend
- echo $REPO
- REPO2=$(echo $REPO | sed 's/http:\\/\\///g')
- sed '/apt-get/ s|$| '"$PROXY"'|' Dockerfile
- sed -i.bak 's/uv cache clean.*$/ /' Dockerfile
- sed -i '6i\RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile
- sed -i '7i\RUN export UV_PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile
- sed -i '7i\ENV UV_PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile
- sed -i '8i\ENV UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile
- sed -i '9i\ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile
- cat Dockerfile
- name: build_docker
pull: if-not-exists
image: docker:24.0.6
privileged: true
volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
volumes:
- name: apt-cache
path: /var/cache/apt/archives # 将应用打包好的Jar和执行脚本挂载出来
path: /var/cache/apt/archives
- name: socket
path: /var/run/docker.sock
- name: pro-cache
path: /root/.local/share/pypoetry
- name: uv-cache
path: /root/.cache/uv
environment:
http_proxy:
from_secret: PROXY
@@ -285,6 +281,19 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
- docker build -t $docker_repo:$version .
- docker push $docker_repo:$version
- name: ssh deploy
image: appleboy/drone-ssh
pull: if-not-exists
settings:
host: 192.168.106.114
username: root
password:
from_secret: sshpwd_114
port: 22
command_timeout: 10m
script:
- bash /opt/bisheng/deploy.sh
- name: notify-start # notify
pull: if-not-exists
image: plugins/webhook
@@ -313,15 +322,16 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
}
}
}
when: # 成功
when:
status:
- success
- failure
trigger:
branch:
- add_some_branch_you_need
- 2.5.0-PM
event:
- push
volumes:
- name: bisheng-cache
host:
@@ -335,3 +345,6 @@ volumes:
- name: socket
host:
path: /var/run/docker.sock
- name: uv-cache
host:
path: /opt/drone/data/uv/
+18
View File
@@ -0,0 +1,18 @@
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 4
[*.{js,jsx,ts,tsx,json,yml,yaml,css,scss,html}]
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
+20
View File
@@ -0,0 +1,20 @@
## What
简要描述做了什么改动。
## Why
为什么需要这个改动?
## How
实现方式、设计决策(如有)。
## Test
- [ ] 本地测试通过
- [ ] 114 测试服务器验证通过
## Related
- Issue/ticket:
+16 -47
View File
@@ -1,57 +1,26 @@
exclude: ^scripts|docs|docker|requirements|README.md|test|experimental
exclude: ^(scripts|docs|docker|requirements|test|experimental)/
repos:
- repo: https://github.com/PyCQA/flake8.git
rev: 3.8.3
hooks:
- id: flake8
args: ["--max-line-length=120"]
- repo: https://github.com/asottile/seed-isort-config
rev: v2.2.0
hooks:
- id: seed-isort-config
- repo: https://github.com/timothycrosley/isort
rev: 4.3.21
hooks:
- id: isort
files: \.(py|pyd)$
args: ["-l 100"]
- repo: https://github.com/pre-commit/mirrors-yapf
rev: v0.32.0
hooks:
- id: yapf
files: \.(py|pyd)$
args: ["--style={column_limit: 120}"]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.1.0
rev: v4.6.0
hooks:
- id: trailing-whitespace
files: \.(py|pyd)$
files: \.(py|pyd|ts|tsx|js|jsx)$
- id: check-yaml
- id: end-of-file-fixer
files: \.(py|pyd)$
- id: requirements-txt-fixer
- id: double-quote-string-fixer
files: \.(py|pyd|ts|tsx|js|jsx)$
- id: check-merge-conflict
- id: fix-encoding-pragma
args: ["--remove"]
- id: check-added-large-files
args: ["--maxkb=500"]
- id: mixed-line-ending
args: ["--fix=lf"]
files: \.(py|pyd)$
# - repo: https://github.com/jumanjihouse/pre-commit-hooks
# rev: 2.1.4
# hooks:
# - id: markdownlint
# args: ["-r", "~MD002,~MD013,~MD029,~MD033,~MD034,~MD005"]
# - repo: https://github.com/myint/docformatter
# rev: v1.3.1
# hooks:
# - id: docformatter
# args: ["--in-place", "--wrap-descriptions", "79"]
- repo: local
files: \.(py|pyd|ts|tsx|js|jsx)$
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.8
hooks:
- id: clang-format
name: clang-format
description: Format files with ClangFormat
entry: clang-format -i
language: system
files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|cuh|proto)$
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
types_or: [python, pyi]
- id: ruff-format
types_or: [python, pyi]