Skip to content

docs: promo.md added #225

docs: promo.md added

docs: promo.md added #225

Workflow file for this run

name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
tests:
name: ${{ matrix.job-name }}
runs-on: ubuntu-latest
continue-on-error: ${{ !matrix.required }}
env:
PYTHONUNBUFFERED: "1"
strategy:
fail-fast: false
matrix:
include:
- python-version: "3.10"
job-name: "tests (py3.10)"
required: true
- python-version: "3.11"
job-name: "tests (py3.11)"
required: true
- python-version: "3.12"
job-name: "tests (py3.12)"
required: true
- python-version: "3.13"
job-name: "tests (py3.13)"
required: true
- python-version: "3.14"
job-name: "tests (py3.14 provisional)"
required: false
steps:
- uses: actions/checkout@v4
- name: Runtime lane policy
run: |
echo "python-version=${{ matrix.python-version }}"
echo "required-lane=${{ matrix.required }}"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python --version
python -m pip --version
python -m pip debug --verbose | sed -n '1,80p'
python -m pip install --upgrade pip
python -m pip install -e ".[dev,openai,gemini]" -v
python -m pip freeze | sed -n '1,120p'
- name: Prewarm tree-sitter parsers
run: |
python - <<'PY'
from importlib import metadata
from gloggur.parsers.registry import ParserRegistry
from tree_sitter_language_pack import get_parser
languages = sorted(set(ParserRegistry().supported_extensions().values()))
print(f"tree-sitter-language-pack={metadata.version('tree-sitter-language-pack')}")
for language in languages:
print(f"warming parser: {language}")
get_parser(language)
print(f"warmed_languages={','.join(languages)}")
PY
- name: Run pytest
run: pytest --cov-report=xml:coverage-full.xml -m "not performance and not native_parser"
- name: Run native parser pytest
if: ${{ matrix.required }}
run: pytest -n0 --no-cov -m native_parser
- name: Run coverage baseline contract
if: ${{ matrix.python-version == '3.13' }}
run: python scripts/check_coverage_baseline.py --coverage-file coverage-full.xml --format json
- name: Run verification static quality gates
if: ${{ matrix.python-version == '3.13' }}
run: python scripts/run_static_quality_gates.py --format json
- name: Run error catalog contract check
if: ${{ matrix.python-version == '3.13' }}
run: python scripts/check_error_catalog_contract.py --format json
- name: Run full workflow smoke harness
if: ${{ matrix.python-version == '3.13' }}
run: python scripts/run_smoke.py --format json
- name: Run packaging smoke harness
if: ${{ matrix.python-version == '3.13' }}
run: python scripts/run_packaging_smoke.py --format json
- name: Run artifact smoke harness
if: ${{ matrix.python-version == '3.13' }}
run: python scripts/run_artifact_smoke.py --format json
- name: Write lane report
if: ${{ always() }}
env:
GLOGGUR_MATRIX_PYTHON_VERSION: ${{ matrix.python-version }}
GLOGGUR_MATRIX_REQUIRED: ${{ matrix.required }}
GLOGGUR_LANE_STATUS: ${{ job.status }}
run: |
python - <<'PY'
import json
import os
from pathlib import Path
report = {
"python_version": os.environ["GLOGGUR_MATRIX_PYTHON_VERSION"],
"required": os.environ["GLOGGUR_MATRIX_REQUIRED"],
"status": os.environ["GLOGGUR_LANE_STATUS"],
}
output = Path(f"verification-lane-{report['python_version']}.json")
output.write_text(json.dumps(report, indent=2) + "\n", encoding="utf8")
print(output)
PY
- name: Upload lane report artifact
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: verification-lane-${{ matrix.python-version }}
path: verification-lane-${{ matrix.python-version }}.json
if-no-files-found: error
lane-audit:
runs-on: ubuntu-latest
needs: tests
if: ${{ always() }}
steps:
- uses: actions/checkout@v4
- name: Download lane report artifacts
uses: actions/download-artifact@v4
with:
pattern: verification-lane-*
path: verification-lane-artifacts
merge-multiple: true
- name: Audit lane coverage and required/provisional policy
run: python scripts/audit_verification_lanes.py --reports-dir verification-lane-artifacts --format json