Skip to content

Remove cloud-sync archive policy and refresh Iris SEO #97

Remove cloud-sync archive policy and refresh Iris SEO

Remove cloud-sync archive policy and refresh Iris SEO #97

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read
jobs:
validate:
name: Validate
runs-on: windows-latest
env:
CARGO_TERM_COLOR: always
LIBCLANG_PATH: C:\Program Files\LLVM\bin
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: "24"
cache: npm
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Install LLVM for whisper-rs bindgen
shell: pwsh
run: |
choco install llvm -y --no-progress
"C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Append
- name: Install Rust components
shell: pwsh
run: |
rustup component add rustfmt clippy
rustc --version
cargo --version
- name: Install Node dependencies
run: npm ci
- name: Provision pinned Hermes runtimes
shell: pwsh
run: |
python -m pip install uv
.\scripts\provision_hermes_acp.ps1
.\scripts\provision_iris_browser.ps1
- name: Check Rust formatting
run: cargo fmt --all -- --check
- name: Build Rust workspace
run: cargo build --workspace
- name: Test Rust workspace
run: cargo test --workspace
- name: Run Clippy
run: cargo clippy --workspace -- -D warnings
- name: Run voice tests
run: npm run test:voice
- name: Run Python tests
run: npm run test:python
- name: Run repository audit
run: cargo run -p xtask
- name: Run deterministic runtime checks
shell: pwsh
run: |
cargo run -p iris-runtime -- --dashboard-json
$stdoutPath = Join-Path $env:RUNNER_TEMP "iris-self-check-stdout.txt"
$stderrPath = Join-Path $env:RUNNER_TEMP "iris-self-check-stderr.txt"
$process = Start-Process -FilePath ".\target\debug\iris-runtime.exe" `
-ArgumentList "--self-check" -NoNewWindow -Wait -PassThru `
-RedirectStandardOutput $stdoutPath -RedirectStandardError $stderrPath
$output = (Get-Content $stdoutPath, $stderrPath -Raw | Out-String)
$exitCode = $process.ExitCode
Write-Host $output
if ($exitCode -eq 0) {
throw "Offline CI self-check unexpectedly succeeded without bundled models or Ollama."
}
$expectedFailure = $output -match "missing Kokoro model" -or
$output -match "Ollama/model health check failed"
if (-not $expectedFailure) {
throw "Offline CI self-check did not report the expected prerequisite failure."
}
- name: Capture dependency inventory
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path diagnostics | Out-Null
cargo metadata --format-version 1 | Set-Content diagnostics\cargo-metadata.json
npm ls --all --json | Set-Content diagnostics\npm-dependencies.json
uv pip list --python .\.iris-runtime\hermes\.venv\Scripts\python.exe --format freeze | Set-Content diagnostics\hermes-python-dependencies.txt
- name: Upload dependency inventory
uses: actions/upload-artifact@v6
with:
name: iris-dependency-inventory
path: |
diagnostics/cargo-metadata.json
diagnostics/npm-dependencies.json
diagnostics/hermes-python-dependencies.txt
- name: Check whitespace
run: git diff --check