fix(deploy): venv 引导(缺 ensurepip)与国内镜像
CI / backend (push) Canceled after 0s

This commit is contained in:
2026-10-30 21:53:42 +08:00
parent ea5d28304e
commit 2a118ad407
+12 -4
View File
@@ -17,6 +17,8 @@ ENV_FILE=$CONF_DIR/env.production
SERVICE=${SERVICE:-dadaotask-api} SERVICE=${SERVICE:-dadaotask-api}
PORT=${PORT:-8200} PORT=${PORT:-8200}
REPO_URL=${REPO_URL:-https://gitea.tatta.cn/Tatta/DadaoTask.git} REPO_URL=${REPO_URL:-https://gitea.tatta.cn/Tatta/DadaoTask.git}
# 服务器直连 pypi/npm 官方源很慢(实测 npm 包几百 KB 就能卡住),默认走国内镜像
NPM_REGISTRY=${NPM_REGISTRY:-https://registry.npmmirror.com}
step() { printf '\n== %s ==\n' "$*"; } step() { printf '\n== %s ==\n' "$*"; }
die() { printf '!! %s\n' "$*" >&2; exit 1; } die() { printf '!! %s\n' "$*" >&2; exit 1; }
@@ -41,16 +43,22 @@ SHORT=$(git rev-parse --short HEAD)
echo " HEAD=$COMMIT ($SHORT)" echo " HEAD=$COMMIT ($SHORT)"
step "2. Python 依赖" step "2. Python 依赖"
[ -x .venv/bin/python ] || python3 -m venv .venv # openclaw-01 是 Debian/Ubuntu 系但没装 python3-venv(ensurepip 缺失),也没有 sudo;
.venv/bin/pip install -q --upgrade pip # 所以先建 --without-pip 的 venv,再用系统 pip 把 pip 装进去。镜像可用 env 覆盖。
.venv/bin/pip install -q -r backend/requirements.txt PIP_INDEX=${PIP_INDEX:-https://mirrors.aliyun.com/pypi/simple/}
if ! [ -x .venv/bin/python ] || ! .venv/bin/python -m pip --version >/dev/null 2>&1; then
rm -rf .venv
python3 -m venv --without-pip .venv
python3 -m pip --python .venv/bin/python install -q --index-url "$PIP_INDEX" pip setuptools wheel
fi
.venv/bin/python -m pip install -q --index-url "$PIP_INDEX" --upgrade -r backend/requirements.txt
step "3. 数据库迁移(迁移角色,非应用角色)" step "3. 数据库迁移(迁移角色,非应用角色)"
set -a; . "$ENV_FILE"; set +a set -a; . "$ENV_FILE"; set +a
( cd backend && ../.venv/bin/alembic upgrade head ) ( cd backend && ../.venv/bin/alembic upgrade head )
step "4. 前端构建(只在服务器上、只用 HEAD 的源码)" step "4. 前端构建(只在服务器上、只用 HEAD 的源码)"
( cd web && npm ci --no-audit --no-fund && npm run build ) ( cd web && npm ci --no-audit --no-fund --registry="$NPM_REGISTRY" && npm run build )
test -f web/dist/index.html || die "前端构建产物缺失:web/dist/index.html" test -f web/dist/index.html || die "前端构建产物缺失:web/dist/index.html"
step "5. 写入构建标记并重启服务" step "5. 写入构建标记并重启服务"