Skip to content

Improve Pages SEO and indexability (#23) #58

Improve Pages SEO and indexability (#23)

Improve Pages SEO and indexability (#23) #58

Workflow file for this run

name: Data quality
on:
pull_request:
push:
branches:
- main
- "agent/**"
workflow_dispatch:
permissions:
contents: read
jobs:
python-quality:
name: Python quality
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.12"
cache: pip
cache-dependency-path: |
requirements.txt
requirements-dev.txt
- name: Install runtime and quality dependencies
run: python -m pip install -r requirements.txt -r requirements-dev.txt
- name: Lint Python sources and tests
run: ruff check scripts tests
- name: Type-check the validation boundary
run: mypy
- name: Enforce validator test coverage
run: |
coverage run -m unittest discover -s tests
coverage report
python-compatibility:
name: Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Install pipeline dependency
run: python -m pip install -r requirements.txt
- name: Validate dataset
run: python scripts/validate_dataset.py
- name: Run Python test suite
run: python -m unittest discover -s tests -v
data-quality:
name: Data quality gate
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.12"
cache: pip
- name: Install pipeline dependency
run: python -m pip install -r requirements.txt
- name: Validate committed data and quality contracts
run: python scripts/validate_dataset.py
- name: Verify declared source snapshots and checksums
run: >-
python -c
"import sys; sys.path.insert(0, 'scripts');
from source_data import validate_declared_sources;
validate_declared_sources()"
- name: Build twice and verify determinism
run: python scripts/check_determinism.py
- name: Validate rebuilt data and cross-format equivalence
run: python scripts/validate_dataset.py
- name: Run schema, integrity, coordinate and territorial tests
run: python -m unittest discover -s tests -v
- name: Test Pages search and map logic
run: node --test tests/pages_core.test.mjs
- name: Build deterministic GitHub Pages site
run: python scripts/build_pages.py
- name: Build versioned release assets
run: python scripts/build_release.py
- name: Validate versioned release assets
run: python scripts/validate_release.py
- name: Smoke-test release artifact upload
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: "Italian_Cities-release-smoke-${{ github.sha }}"
path: "dist/*/*"
if-no-files-found: error
retention-days: 1
- name: Reject stale, divergent or manually edited artifacts
run: >-
git diff --exit-code --
data
":(exclude)data/italian_locations.sqlite"
reports/release-diff.json
reports/build-metadata.json
reports/legacy-comparison.json
reports/export-manifest.json
reports/determinism.json
reports/quality-validation.json