From 2c4e2c26535a6b317862a04eb5b0e99f5952ba4c Mon Sep 17 00:00:00 2001 From: voson Date: Thu, 30 Jul 2026 18:45:58 +0800 Subject: [PATCH] Fall back when runner lacks python venv/ensurepip. Linux self-hosted runners without python3-venv fail job-local venv; use pip --break-system-packages so refresh can still install deps. Co-authored-by: Cursor --- .gitea/workflows/web-daily.yml | 15 +++++++++++---- .gitea/workflows/web-patch.yml | 15 +++++++++++---- .gitea/workflows/web-weekly.yml | 15 +++++++++++---- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.gitea/workflows/web-daily.yml b/.gitea/workflows/web-daily.yml index 55d3d97..9ee8ba9 100644 --- a/.gitea/workflows/web-daily.yml +++ b/.gitea/workflows/web-daily.yml @@ -38,9 +38,16 @@ jobs: PYTHON=python3 command -v python3 >/dev/null || PYTHON=python command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; } - # Job-local venv: Homebrew/PEP 668 blocks system pip install. - "$PYTHON" -m venv .venv - .venv/bin/pip install -q -r web/requirements.txt + # Prefer job-local venv (PEP 668). Some runners lack ensurepip/python3-venv. + rm -rf .venv + if "$PYTHON" -m venv .venv; then + .venv/bin/pip install -q -r web/requirements.txt + echo "CLIMPEROR_PY=${PWD}/.venv/bin/python" >> "$GITHUB_ENV" + else + echo "venv unavailable; pip --break-system-packages" + "$PYTHON" -m pip install -q --break-system-packages -r web/requirements.txt + echo "CLIMPEROR_PY=${PYTHON}" >> "$GITHUB_ENV" + fi - name: Refresh daily tier env: @@ -53,7 +60,7 @@ jobs: OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} run: | set -e - .venv/bin/python web/refresh_web.py --tier daily + "${CLIMPEROR_PY}" web/refresh_web.py --tier daily - name: Save refresh summary if: always() diff --git a/.gitea/workflows/web-patch.yml b/.gitea/workflows/web-patch.yml index a534872..3e6ae39 100644 --- a/.gitea/workflows/web-patch.yml +++ b/.gitea/workflows/web-patch.yml @@ -37,9 +37,16 @@ jobs: PYTHON=python3 command -v python3 >/dev/null || PYTHON=python command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; } - # Job-local venv: Homebrew/PEP 668 blocks system pip install. - "$PYTHON" -m venv .venv - .venv/bin/pip install -q -r web/requirements.txt + # Prefer job-local venv (PEP 668). Some runners lack ensurepip/python3-venv. + rm -rf .venv + if "$PYTHON" -m venv .venv; then + .venv/bin/pip install -q -r web/requirements.txt + echo "CLIMPEROR_PY=${PWD}/.venv/bin/python" >> "$GITHUB_ENV" + else + echo "venv unavailable; pip --break-system-packages" + "$PYTHON" -m pip install -q --break-system-packages -r web/requirements.txt + echo "CLIMPEROR_PY=${PYTHON}" >> "$GITHUB_ENV" + fi - name: Refresh patch tier env: @@ -51,7 +58,7 @@ jobs: OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} run: | set -e - .venv/bin/python web/refresh_web.py --tier patch + "${CLIMPEROR_PY}" web/refresh_web.py --tier patch - name: Save refresh summary if: always() diff --git a/.gitea/workflows/web-weekly.yml b/.gitea/workflows/web-weekly.yml index cf0ac52..0e4bd0d 100644 --- a/.gitea/workflows/web-weekly.yml +++ b/.gitea/workflows/web-weekly.yml @@ -36,9 +36,16 @@ jobs: PYTHON=python3 command -v python3 >/dev/null || PYTHON=python command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; } - # Job-local venv: Homebrew/PEP 668 blocks system pip install. - "$PYTHON" -m venv .venv - .venv/bin/pip install -q -r web/requirements.txt + # Prefer job-local venv (PEP 668). Some runners lack ensurepip/python3-venv. + rm -rf .venv + if "$PYTHON" -m venv .venv; then + .venv/bin/pip install -q -r web/requirements.txt + echo "CLIMPEROR_PY=${PWD}/.venv/bin/python" >> "$GITHUB_ENV" + else + echo "venv unavailable; pip --break-system-packages" + "$PYTHON" -m pip install -q --break-system-packages -r web/requirements.txt + echo "CLIMPEROR_PY=${PYTHON}" >> "$GITHUB_ENV" + fi - name: Refresh weekly tier env: @@ -51,7 +58,7 @@ jobs: OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} run: | set -e - .venv/bin/python web/refresh_web.py --tier weekly + "${CLIMPEROR_PY}" web/refresh_web.py --tier weekly - name: Save refresh summary if: always()