Skip to content

Dimensional Validation Evidence #18

Dimensional Validation Evidence

Dimensional Validation Evidence #18

name: Dimensional Validation Evidence
on:
workflow_dispatch:
inputs:
preset:
description: CMake/CTest preset
required: false
default: ci-linux-release
type: string
regex:
description: Optional CTest regex override
required: false
default: ""
type: string
schedule:
- cron: "45 7 * * 1"
jobs:
linux-dimensional-validation:
name: Linux dimensional validation evidence
runs-on: ubuntu-24.04
timeout-minutes: 45
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build g++ python3
- name: Setup vcpkg
uses: anolishq/.github/.github/actions/setup-vcpkg@a9b3d134acbcc7dcd6da02c1a345a1fbdca15064 # v2.4
with:
triplet: x64-linux
- name: Resolve options
id: opts
shell: bash
run: |
set -euo pipefail
PRESET="ci-linux-release"
REGEX=""
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
if [[ -n "${{ github.event.inputs.preset }}" ]]; then
PRESET="${{ github.event.inputs.preset }}"
fi
if [[ -n "${{ github.event.inputs.regex }}" ]]; then
REGEX="${{ github.event.inputs.regex }}"
fi
fi
OUT_DIR="artifacts/dimensional-validation/${{ github.run_id }}_${{ github.run_attempt }}_${PRESET}"
echo "preset=${PRESET}" >> "$GITHUB_OUTPUT"
echo "regex=${REGEX}" >> "$GITHUB_OUTPUT"
echo "out_dir=${OUT_DIR}" >> "$GITHUB_OUTPUT"
- name: Run dimensional validation
shell: bash
run: |
set -euo pipefail
ARGS=(
"--preset" "${{ steps.opts.outputs.preset }}"
"--output-dir" "${{ steps.opts.outputs.out_dir }}"
"--enforce"
)
if [[ -n "${{ steps.opts.outputs.regex }}" ]]; then
ARGS+=("--regex" "${{ steps.opts.outputs.regex }}")
fi
python3 scripts/run_dimensional_validation.py "${ARGS[@]}"
- name: Upload dimensional artifacts
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: dimensional-validation-evidence-linux-${{ github.run_id }}-${{ github.run_attempt }}
path: ${{ steps.opts.outputs.out_dir }}
if-no-files-found: warn