dev_1.0.0_yuyr_2:重新提交 PR,增加 master/agent 以及系统集成测试 (#17)
Reviewed-on: #17 Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: xuxt <xuxt@zgclab.edu.cn>
This commit was merged in pull request #17.
This commit is contained in:
97
src/master/scripts/prepare_offline_wheels.sh
Executable file
97
src/master/scripts/prepare_offline_wheels.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
usage() {
|
||||
cat >&2 <<'USAGE'
|
||||
Usage: $0 [--pip-version <version>] [--clean] [--local]
|
||||
|
||||
Options:
|
||||
--pip-version <version> 额外下载指定版本的 pip wheel(例如 25.2)。
|
||||
--clean 清理 offline_wheels/*.whl 后重新下载。
|
||||
--local 使用本地 python 执行下载(默认通过 docker python:3.11-slim)。
|
||||
USAGE
|
||||
}
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
REQUIREMENTS_FILE="$PROJECT_ROOT/requirements.txt"
|
||||
WHEEL_DIR="$PROJECT_ROOT/offline_wheels"
|
||||
PIP_VERSION=""
|
||||
CLEAN=0
|
||||
USE_LOCAL=0
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--pip-version)
|
||||
[[ $# -ge 2 ]] || { usage; exit 1; }
|
||||
PIP_VERSION="$2"
|
||||
shift 2
|
||||
;;
|
||||
--clean)
|
||||
CLEAN=1
|
||||
shift
|
||||
;;
|
||||
--local)
|
||||
USE_LOCAL=1
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1" >&2
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ ! -f "$REQUIREMENTS_FILE" ]]; then
|
||||
echo "[ERROR] requirements.txt not found at $REQUIREMENTS_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$WHEEL_DIR"
|
||||
|
||||
if [[ "$CLEAN" -eq 1 ]]; then
|
||||
echo "[INFO] Cleaning existing wheels in $WHEEL_DIR"
|
||||
find "$WHEEL_DIR" -maxdepth 1 -type f -name '*.whl' -delete
|
||||
fi
|
||||
|
||||
run_with_python() {
|
||||
local cmd=("python" "-m" "pip" "$@")
|
||||
eval "${cmd[@]}"
|
||||
}
|
||||
|
||||
if [[ "$USE_LOCAL" -eq 1 ]]; then
|
||||
PYTHON_BIN=${PYTHON_BIN:-python3}
|
||||
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
|
||||
echo "[ERROR] $PYTHON_BIN not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "[INFO] Using local python ($PYTHON_BIN) to download wheels"
|
||||
"$PYTHON_BIN" -m pip download -r "$REQUIREMENTS_FILE" -d "$WHEEL_DIR"
|
||||
if [[ -n "$PIP_VERSION" ]]; then
|
||||
"$PYTHON_BIN" -m pip download "pip==${PIP_VERSION}" -d "$WHEEL_DIR"
|
||||
fi
|
||||
else
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "[ERROR] docker not found; rerun with --local or安装 docker" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "[INFO] Using docker image python:3.11-slim 下载 wheel"
|
||||
docker run --rm \
|
||||
-v "$WHEEL_DIR":/wheels \
|
||||
-v "$REQUIREMENTS_FILE":/tmp/requirements.txt \
|
||||
python:3.11-slim \
|
||||
bash -c "set -euo pipefail && python -m pip install --upgrade pip && python -m pip download -r /tmp/requirements.txt -d /wheels"
|
||||
if [[ -n "$PIP_VERSION" ]]; then
|
||||
docker run --rm \
|
||||
-v "$WHEEL_DIR":/wheels \
|
||||
python:3.11-slim \
|
||||
bash -c "set -euo pipefail && python -m pip download pip==${PIP_VERSION} -d /wheels"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "[INFO] Offline wheels prepared at $WHEEL_DIR"
|
||||
Reference in New Issue
Block a user