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 <cursoragent@cursor.com>
This commit is contained in:
voson
2026-07-30 18:45:58 +08:00
co-authored by Cursor
parent e0a8228707
commit 2c4e2c2653
3 changed files with 33 additions and 12 deletions
+11 -4
View File
@@ -38,9 +38,16 @@ jobs:
PYTHON=python3 PYTHON=python3
command -v python3 >/dev/null || PYTHON=python command -v python3 >/dev/null || PYTHON=python
command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; } command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; }
# Job-local venv: Homebrew/PEP 668 blocks system pip install. # Prefer job-local venv (PEP 668). Some runners lack ensurepip/python3-venv.
"$PYTHON" -m venv .venv rm -rf .venv
.venv/bin/pip install -q -r web/requirements.txt 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 - name: Refresh daily tier
env: env:
@@ -53,7 +60,7 @@ jobs:
OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
run: | run: |
set -e set -e
.venv/bin/python web/refresh_web.py --tier daily "${CLIMPEROR_PY}" web/refresh_web.py --tier daily
- name: Save refresh summary - name: Save refresh summary
if: always() if: always()
+11 -4
View File
@@ -37,9 +37,16 @@ jobs:
PYTHON=python3 PYTHON=python3
command -v python3 >/dev/null || PYTHON=python command -v python3 >/dev/null || PYTHON=python
command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; } command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; }
# Job-local venv: Homebrew/PEP 668 blocks system pip install. # Prefer job-local venv (PEP 668). Some runners lack ensurepip/python3-venv.
"$PYTHON" -m venv .venv rm -rf .venv
.venv/bin/pip install -q -r web/requirements.txt 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 - name: Refresh patch tier
env: env:
@@ -51,7 +58,7 @@ jobs:
OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
run: | run: |
set -e set -e
.venv/bin/python web/refresh_web.py --tier patch "${CLIMPEROR_PY}" web/refresh_web.py --tier patch
- name: Save refresh summary - name: Save refresh summary
if: always() if: always()
+11 -4
View File
@@ -36,9 +36,16 @@ jobs:
PYTHON=python3 PYTHON=python3
command -v python3 >/dev/null || PYTHON=python command -v python3 >/dev/null || PYTHON=python
command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; } command -v node >/dev/null || { echo "node/npx required for wrangler deploy"; exit 1; }
# Job-local venv: Homebrew/PEP 668 blocks system pip install. # Prefer job-local venv (PEP 668). Some runners lack ensurepip/python3-venv.
"$PYTHON" -m venv .venv rm -rf .venv
.venv/bin/pip install -q -r web/requirements.txt 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 - name: Refresh weekly tier
env: env:
@@ -51,7 +58,7 @@ jobs:
OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }} OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
run: | run: |
set -e set -e
.venv/bin/python web/refresh_web.py --tier weekly "${CLIMPEROR_PY}" web/refresh_web.py --tier weekly
- name: Save refresh summary - name: Save refresh summary
if: always() if: always()