Files
VPSMaster/.github/workflows/tests.yml

52 lines
2.4 KiB
YAML

name: Private Beta acceptance
on:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: private-beta-${{ github.ref }}
cancel-in-progress: false
jobs:
ubuntu:
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
include:
- os: Ubuntu 22.04
label: vpsmaster-ubuntu22
python: '3.10'
- os: Ubuntu 24.04
label: vpsmaster-ubuntu24
python: '3.12'
runs-on: [self-hosted, Linux, X64, '${{ matrix.label }}']
env:
PYTHONDONTWRITEBYTECODE: '1'
PIP_DISABLE_PIP_VERSION_CHECK: '1'
EXPECTED_PYTHON: '${{ matrix.python }}'
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Verify interpreter and prepare isolated CI tools
shell: bash
run: |
set -euo pipefail
python3 -B -c 'import os,sys; assert sys.version_info[:2] == tuple(map(int,os.environ["EXPECTED_PYTHON"].split("."))); print(sys.version.split()[0])'
python3 -B -m venv "$RUNNER_TEMP/vpsmaster-ci-venv"
"$RUNNER_TEMP/vpsmaster-ci-venv/bin/python" -B -m pip install --timeout 15 --retries 1 'pytest>=8,<10' 'setuptools>=77,<100' 'wheel>=0.45,<1'
- name: Complete regression tests
shell: bash
run: '"$RUNNER_TEMP/vpsmaster-ci-venv/bin/python" -B -m pytest tests -q -p no:cacheprovider --junitxml="$RUNNER_TEMP/vpsmaster-unit.xml"'
- name: Wheel build
shell: bash
run: '"$RUNNER_TEMP/vpsmaster-ci-venv/bin/python" -B -m pip wheel --no-build-isolation --no-deps . --wheel-dir "$RUNNER_TEMP/wheels"'
- name: Offline CLI lifecycle without publishing raw host details
shell: bash
run: |
set -euo pipefail
status=0
"$RUNNER_TEMP/vpsmaster-ci-venv/bin/python" -B -m proxydoctor suite --offline --lang en --json-output "$RUNNER_TEMP/offline.json" > "$RUNNER_TEMP/offline.log" 2>&1 || status=$?
if [ "$status" -gt 1 ]; then echo "CLI lifecycle failed, exit $status"; exit 1; fi
"$RUNNER_TEMP/vpsmaster-ci-venv/bin/python" -B -c 'import json,os,pathlib; d=json.loads((pathlib.Path(os.environ["RUNNER_TEMP"])/"offline.json").read_text()); assert d["summary"]["failed_modules"]==0; print("Offline CLI completed with zero failed modules; raw report retained only in temporary runner storage.")'