52 lines
2.4 KiB
YAML
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.")'
|