diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index c961e8c8..a79965a1 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -34,42 +34,14 @@ jobs: - name: Setup Python Environment run: | # 순수 Python 패키지만 설치 (numpy/pandas 제외 — ARMv7l 휠 없음) - VENV_BASE=$HOME/python_venv - REQ_HASH=$(md5sum tools/validate_specs.py 2>/dev/null | cut -d' ' -f1 || echo "default") - VENV="$VENV_BASE/$REQ_HASH" - - if [ ! -f "$VENV/bin/python" ]; then - echo "=== venv 신규 생성: $REQ_HASH ===" - mkdir -p "$VENV_BASE" - /usr/bin/python3 --version - /usr/bin/python3 -m venv "$VENV" || { - echo "venv creation failed; attempting ensurepip recovery" - /usr/bin/python3 -m ensurepip --upgrade - /usr/bin/python3 -m venv "$VENV" - } - - # The runner may provide a venv without pip. Bootstrap with the - # active interpreter instead of a version-specific get-pip URL. - if [ ! -f "$VENV/bin/pip" ]; then - echo "pip missing in venv, bootstrapping with ensurepip..." - "$VENV/bin/python" -m ensurepip --upgrade - fi - - "$VENV/bin/pip" install --upgrade pip --quiet - "$VENV/bin/pip" install requests pyyaml openpyxl --quiet - - # 오래된 venv 정리 (최근 2개만 유지) - ls -dt "$VENV_BASE"/*/ 2>/dev/null | tail -n +3 | xargs rm -rf 2>/dev/null || true - else - echo "=== venv 캐시 히트: $("$VENV/bin/python" --version 2>&1) ===" - "$VENV/bin/python" - <<'PY' - import importlib - for mod in ("requests", "yaml", "openpyxl"): - importlib.import_module(mod) - print("venv dependency import check: PASS") - PY - fi - echo "$VENV/bin" >> $GITHUB_PATH + PYTHON_DEPS="$HOME/python_deps/$(md5sum tools/validate_specs.py | cut -d' ' -f1)" + mkdir -p "$PYTHON_DEPS" + /usr/bin/python3 --version + /usr/bin/python3 -m pip --version + /usr/bin/python3 -m pip install --disable-pip-version-check --quiet \ + --target "$PYTHON_DEPS" requests pyyaml openpyxl + echo "PYTHONPATH=$PYTHON_DEPS:${PYTHONPATH:-}" >> "$GITHUB_ENV" + /usr/bin/python3 -c 'import requests, yaml, openpyxl; print("Python dependencies: PASS")' - name: Install Node Dependencies run: | @@ -236,28 +208,14 @@ jobs: - name: Setup Python Environment run: | - VENV_BASE=$HOME/python_venv - REQ_HASH=$(md5sum tools/validate_snapshot_admin_web_v1.py 2>/dev/null | cut -d' ' -f1 || echo "default") - VENV="$VENV_BASE/$REQ_HASH" - - if [ ! -f "$VENV/bin/python" ]; then - echo "=== venv 신규 생성: $REQ_HASH ===" - mkdir -p "$VENV_BASE" - /usr/bin/python3 -m venv "$VENV" - - if [ ! -f "$VENV/bin/pip" ]; then - echo "pip missing in venv, installing via get-pip.py..." - curl -sS https://bootstrap.pypa.io/pip/3.8/get-pip.py -o get-pip.py - "$VENV/bin/python" get-pip.py --quiet - rm get-pip.py - fi - - "$VENV/bin/pip" install --upgrade pip --quiet - "$VENV/bin/pip" install requests pyyaml openpyxl --quiet - else - echo "=== venv 캐시 히트: $("$VENV/bin/python" --version 2>&1) ===" - fi - echo "$VENV/bin" >> $GITHUB_PATH + PYTHON_DEPS="$HOME/python_deps/$(md5sum tools/validate_snapshot_admin_web_v1.py | cut -d' ' -f1)" + mkdir -p "$PYTHON_DEPS" + /usr/bin/python3 --version + /usr/bin/python3 -m pip --version + /usr/bin/python3 -m pip install --disable-pip-version-check --quiet \ + --target "$PYTHON_DEPS" requests pyyaml openpyxl + echo "PYTHONPATH=$PYTHON_DEPS:${PYTHONPATH:-}" >> "$GITHUB_ENV" + /usr/bin/python3 -c 'import requests, yaml, openpyxl; print("Python dependencies: PASS")' - name: Validate Snapshot Admin Web UI if: needs.validate-core.result == 'success'