release: bump version to 0.65.2
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
release / images (push) Has been cancelled
ci / delivery (push) Has been cancelled

This commit is contained in:
2026-05-22 21:37:38 +08:00
parent ae982e51cd
commit e65267fe21
13 changed files with 77 additions and 20 deletions

View File

@@ -1117,6 +1117,9 @@ compute_ai_provider_build_fingerprint() {
(
cd "$SCRIPT_DIR" || exit 1
{
printf "PYTHON_IMAGE=%s\n" "${PYTHON_IMAGE:-python:3.14-slim}"
printf "UV_IMAGE=%s\n" "${UV_IMAGE:-ghcr.io/astral-sh/uv:latest}"
sha256sum aiprovider/Dockerfile pyproject.toml uv.lock 2>/dev/null
find aiprovider \
-type f \
! -path '*/__pycache__/*' \
@@ -1125,13 +1128,8 @@ compute_ai_provider_build_fingerprint() {
! -name '*.pyc' \
! -name '*.pyo' \
| LC_ALL=C sort \
| xargs -r stat --format="%Y %s %n" 2>/dev/null
sha256sum docker-compose.yml docker-compose.simple.yml 2>/dev/null
| xargs -r sha256sum 2>/dev/null
python3 "$SCRIPT_DIR/scripts/compute_aiprovider_dependency_fingerprint.py" 2>/dev/null
if [ -n "${PLANET_UV_CONFIG_FILE:-}" ] && [ -f "$PLANET_UV_CONFIG_FILE" ]; then
printf "uv-config "
sha256sum "$PLANET_UV_CONFIG_FILE" | awk '{print $1}'
fi
}
) | sha256sum | awk '{print $1}'
}
@@ -1151,6 +1149,12 @@ ai_provider_image_exists() {
docker image inspect "$AI_PROVIDER_IMAGE_NAME" >/dev/null 2>&1
}
read_ai_provider_image_fingerprint() {
docker image inspect \
--format '{{ index .Config.Labels "planet.aiprovider.build-fingerprint" }}' \
"$AI_PROVIDER_IMAGE_NAME" 2>/dev/null || true
}
list_ai_provider_containers() {
docker ps -aq --filter "name=planet_aiprovider" 2>/dev/null || true
}
@@ -1217,12 +1221,23 @@ ensure_ai_provider_image_current() {
current_fingerprint="$(compute_ai_provider_build_fingerprint)"
previous_fingerprint="$(read_ai_provider_build_stamp || true)"
if ai_provider_image_exists && [ -n "$previous_fingerprint" ] && [ "$current_fingerprint" = "$previous_fingerprint" ]; then
AI_PROVIDER_RECREATE_REQUIRED=0
return 0
if ai_provider_image_exists; then
local image_fingerprint
image_fingerprint="$(read_ai_provider_image_fingerprint)"
if [ -n "$image_fingerprint" ] && [ "$current_fingerprint" = "$image_fingerprint" ]; then
write_ai_provider_build_stamp "$current_fingerprint"
AI_PROVIDER_RECREATE_REQUIRED=0
return 0
fi
if [ -z "$image_fingerprint" ] && [ -n "$previous_fingerprint" ] && [ "$current_fingerprint" = "$previous_fingerprint" ]; then
AI_PROVIDER_RECREATE_REQUIRED=0
return 0
fi
fi
set_wait_detail "检测到 AI Provider 代码或配置变化,重建镜像"
AI_PROVIDER_BUILD_FINGERPRINT="$current_fingerprint"
export AI_PROVIDER_BUILD_FINGERPRINT
if ! compose_supports_build; then
log_error "当前 docker compose 不支持 build请检查 Docker / Compose 环境"
@@ -1349,8 +1364,8 @@ ensure_uv_backend_deps() {
"$DEPENDENCY_INSTALL_MAX_RETRIES" \
"$DEPENDENCY_INSTALL_RETRY_INTERVAL" \
"uv 环境初始化失败,已重试 ${DEPENDENCY_INSTALL_MAX_RETRIES}" \
"uv sync" \
run_command_quiet_unless_verbose "$log_file" uv sync --group dev; then
"uv sync --frozen" \
run_command_quiet_unless_verbose "$log_file" uv sync --frozen --group dev; then
tail -20 "$log_file" 2>/dev/null || true
exit 1
fi
@@ -1403,8 +1418,8 @@ sync_python_deps() {
"$DEPENDENCY_INSTALL_MAX_RETRIES" \
"$DEPENDENCY_INSTALL_RETRY_INTERVAL" \
"uv 环境初始化失败,已重试 ${DEPENDENCY_INSTALL_MAX_RETRIES}" \
"uv sync" \
run_command_quiet_unless_verbose "$log_file" uv sync --group dev; then
"uv sync --frozen" \
run_command_quiet_unless_verbose "$log_file" uv sync --frozen --group dev; then
tail -20 "$log_file" 2>/dev/null || true
exit 1
fi
@@ -1959,7 +1974,7 @@ start_backend_with_retry() {
fi
cd "$SCRIPT_DIR/backend"
: > "$BACKEND_LOG_FILE"
PYTHONPATH="$SCRIPT_DIR/backend" nohup uv run --project "$SCRIPT_DIR" python -m uvicorn app.main:app --host "$backend_bind_host" --port "$backend_port" --reload > "$BACKEND_LOG_FILE" 2>&1 &
PYTHONPATH="$SCRIPT_DIR/backend" nohup uv run --frozen --project "$SCRIPT_DIR" python -m uvicorn app.main:app --host "$backend_bind_host" --port "$backend_port" --reload > "$BACKEND_LOG_FILE" 2>&1 &
BACKEND_PID=$!
write_pid_file "$BACKEND_PID_FILE" "$BACKEND_PID"
if [ "$VERBOSE" -eq 1 ]; then