Skip to content

Blas\Lapack (#52)

Blas\Lapack (#52) #69

Workflow file for this run

name: Documentation
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: documentation-${{ github.ref }}
cancel-in-progress: true
env:
PRIK_GFORTRAN_BINARY: gfortran-13
PRIK_GFORTRAN_PACKAGE: gfortran-13
jobs:
benchmark:
name: Documentation performance benchmark · Ubuntu 24.04 ARM64 · Python 3.12
runs-on: ubuntu-24.04-arm
timeout-minutes: 90
permissions:
contents: read
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Verify and record benchmark host
run: >-
python tools/benchmark_host.py
--require-machine aarch64
--require-arm-part 0xd49
--github-env "$GITHUB_ENV"
- name: Install benchmark dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[docs]" \
"numpy==2.5.1" \
"meson==1.11.2" \
"ninja==1.13.0"
- name: Install pinned GFortran
shell: bash
run: |
if ! command -v "$PRIK_GFORTRAN_BINARY" >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install --yes "$PRIK_GFORTRAN_PACKAGE"
fi
compiler_dir="$RUNNER_TEMP/prik-gfortran"
mkdir -p "$compiler_dir"
ln -sf "$(command -v "$PRIK_GFORTRAN_BINARY")" "$compiler_dir/gfortran"
echo "$compiler_dir" >> "$GITHUB_PATH"
"$compiler_dir/gfortran" --version
- name: Run correctness and rigorous performance suite
shell: bash
run: |
if (( GITHUB_RUN_NUMBER % 2 == 0 )); then
export PRIK_BENCHMARK_FIRST=f2py
else
export PRIK_BENCHMARK_FIRST=prik
fi
bash benchmarks/run.sh
- name: Generate public Performance snapshot
run: |
python tools/generate_performance_docs.py \
--commit "$GITHUB_SHA"
- name: Report measurement stability
run: |
python -m pyperf check \
benchmarks/results/f2py.json \
benchmarks/results/prik.json \
benchmarks/results/f2py-build.json \
benchmarks/results/prik-build.json
- name: Upload Performance snapshot and raw results
uses: actions/upload-artifact@v4
with:
name: performance-snapshot
path: |
benchmarks/results/f2py.json
benchmarks/results/prik.json
benchmarks/results/f2py-build.json
benchmarks/results/prik-build.json
docs/user/performance.md
docs/user/assets/performance-comparison.svg
docs/user/assets/build-time-comparison.svg
retention-days: 90
build:
name: Documentation site build · Ubuntu 24.04 · Python 3.12
needs: benchmark
if: always() && (needs.benchmark.result == 'success' || needs.benchmark.result == 'skipped')
runs-on: ubuntu-24.04
permissions:
contents: read
pages: write
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Install documentation dependencies
run: python -m pip install -e ".[docs,qa]"
- name: Download generated Performance snapshot
uses: actions/download-artifact@v4
with:
name: performance-snapshot
path: .
- name: Run documentation tests
run: python -m pytest -q tests/shared/docs
- name: Build reviewed documentation
run: python -m mkdocs build --strict
- name: Configure GitHub Pages
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
uses: actions/configure-pages@v5
- name: Upload GitHub Pages artifact
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v4
with:
path: site
deploy:
name: Documentation deployment · GitHub Pages
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
permissions:
pages: write
id-token: write
steps:
- name: Deploy GitHub Pages
id: deployment
uses: actions/deploy-pages@v4