From 3a621c214eaebcdfb3037c282902dc6e24748a4c Mon Sep 17 00:00:00 2001 From: Aleksandr Meshchriakov Date: Sun, 22 Mar 2026 13:50:12 +0100 Subject: [PATCH] fix(ci): avoid curl-based uv bootstrap --- .gitea/workflows/ci-cd.yml | 50 +++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml index ba586c1..c021c79 100644 --- a/.gitea/workflows/ci-cd.yml +++ b/.gitea/workflows/ci-cd.yml @@ -35,15 +35,34 @@ jobs: - name: Install Python and uv run: | set -euo pipefail - timeout 180s bash -lc 'curl -LsSf https://astral.sh/uv/install.sh | sh' + if command -v python3.11 >/dev/null 2>&1; then + BOOTSTRAP_PYTHON=python3.11 + elif command -v python3 >/dev/null 2>&1; then + BOOTSTRAP_PYTHON=python3 + else + echo "python3 is not available on the runner" >&2 + exit 1 + fi + + timeout 120s "${BOOTSTRAP_PYTHON}" -m ensurepip --upgrade || true + timeout 180s "${BOOTSTRAP_PYTHON}" -m pip install --user --upgrade pip uv export PATH="$HOME/.local/bin:$PATH" - timeout 300s uv python install "${PYTHON_VERSION}" + + if "${BOOTSTRAP_PYTHON}" -c 'import sys; raise SystemExit(0 if sys.version_info >= (3, 11) else 1)'; then + PYTHON_BIN="${BOOTSTRAP_PYTHON}" + else + timeout 300s uv python install "${PYTHON_VERSION}" + PYTHON_BIN="${PYTHON_VERSION}" + fi + + printf 'PYTHON_BIN=%s\n' "${PYTHON_BIN}" > .ci-python-env - name: Create virtual environment and install dependencies run: | set -euo pipefail export PATH="$HOME/.local/bin:$PATH" - uv venv --python "${PYTHON_VERSION}" + . ./.ci-python-env + uv venv --python "${PYTHON_BIN}" . .venv/bin/activate uv sync --dev --frozen @@ -108,15 +127,34 @@ jobs: - name: Install Python and uv run: | set -euo pipefail - timeout 180s bash -lc 'curl -LsSf https://astral.sh/uv/install.sh | sh' + if command -v python3.11 >/dev/null 2>&1; then + BOOTSTRAP_PYTHON=python3.11 + elif command -v python3 >/dev/null 2>&1; then + BOOTSTRAP_PYTHON=python3 + else + echo "python3 is not available on the runner" >&2 + exit 1 + fi + + timeout 120s "${BOOTSTRAP_PYTHON}" -m ensurepip --upgrade || true + timeout 180s "${BOOTSTRAP_PYTHON}" -m pip install --user --upgrade pip uv export PATH="$HOME/.local/bin:$PATH" - timeout 300s uv python install "${PYTHON_VERSION}" + + if "${BOOTSTRAP_PYTHON}" -c 'import sys; raise SystemExit(0 if sys.version_info >= (3, 11) else 1)'; then + PYTHON_BIN="${BOOTSTRAP_PYTHON}" + else + timeout 300s uv python install "${PYTHON_VERSION}" + PYTHON_BIN="${PYTHON_VERSION}" + fi + + printf 'PYTHON_BIN=%s\n' "${PYTHON_BIN}" > .ci-python-env - name: Create virtual environment and install dependencies run: | set -euo pipefail export PATH="$HOME/.local/bin:$PATH" - uv venv --python "${PYTHON_VERSION}" + . ./.ci-python-env + uv venv --python "${PYTHON_BIN}" . .venv/bin/activate uv sync --dev --frozen