ci: streamline validation workflow

This commit is contained in:
Julian lechner committed 2026-09-17 13:00:06 +02:00
1 parent 381f99ea54
commit 64fb27f539
10 files changed
+30 -79

No files matched your search

+30 -79
View File
@@ -1,4 +1,4 @@
name: CI name: CI
on: on:
push: push:
@@ -12,85 +12,36 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: Check Linux tooling
run: |
command -v pwsh >/dev/null || { echo 'pwsh is required on the Linux runner'; exit 1; }
- name: Bash syntax - name: Bash syntax
run: find scripts shared/hooks -name '*.sh' -print0 | xargs -0 -n1 bash -n shell: bash
- name: Capability checks run: git ls-files -z '*.sh' | xargs -0 -r -n1 bash -n
run: ./scripts/check-capabilities.sh
- name: Build
run: ./scripts/build.sh --summary
- name: Prompt budget
run: ./scripts/prompt-budget.sh --summary
- name: Repository context cache
run: ./scripts/repository-context.sh --summary
- name: Doctor
run: ./scripts/doctor.sh --summary
- name: PowerShell syntax - name: PowerShell syntax
run: |
find scripts shared/hooks -name '*.ps1' -print0 | xargs -0 -n1 pwsh -NoProfile -Command '$tokens=$null; $errors=$null; [System.Management.Automation.Language.Parser]::ParseFile($args[0],[ref]$tokens,[ref]$errors) | Out-Null; if ($errors.Count) { $errors | % { Write-Error $_ }; exit 1 }'
- name: PowerShell build and validation
shell: pwsh shell: pwsh
run: | run: |
$env:REQUIRE_CODEX_SCHEMA = 'true' $ErrorActionPreference = 'Stop'
./scripts/check-capabilities.ps1 $failed = $false
./scripts/build.ps1 -Summary foreach ($file in (git ls-files '*.ps1')) {
./scripts/doctor.ps1 -Summary $tokens = $null
./scripts/test-shell-packages.ps1 -Summary $parseErrors = $null
./scripts/test-managed-install.ps1 -Summary [System.Management.Automation.Language.Parser]::ParseFile((Join-Path $PWD $file), [ref]$tokens, [ref]$parseErrors) | Out-Null
./scripts/test-build-validation.ps1 -Summary if ($parseErrors.Count) {
./scripts/test-install-guards.ps1 -Summary $parseErrors | ForEach-Object { Write-Host "${file}: $_" }
./scripts/test-plugin-selection.ps1 -Summary $failed = $true
./scripts/test-quick-update.ps1 -Summary }
python ./scripts/test-install-options.py }
python ./scripts/test-quick-update.py if ($failed) { exit 1 }
python ./scripts/test-managed-extensions.py - name: Build
python ./scripts/test-session-state.py shell: bash
python ./scripts/test-telemetry.py run: bash scripts/build.sh --summary
python ./scripts/test-semantic-retrieval.py - name: Bash install dry run
./scripts/install.ps1 -Summary -DryRun -Client Both -Shell PowerShell shell: bash
./scripts/update.ps1 -Summary -DryRun -Client Both -Shell PowerShell run: bash scripts/install.sh --summary --dry-run --client both --shell bash
- name: Shell package tests - name: Bash update dry run
run: ./scripts/test-shell-packages.sh --summary shell: bash
- name: Managed manifest tests run: bash scripts/update.sh --summary --dry-run --client both --shell bash
run: ./scripts/test-managed-install.sh --summary - name: PowerShell install dry run
- name: Build validation tests shell: pwsh
run: ./scripts/test-build-validation.sh --summary run: ./scripts/install.ps1 -Summary -DryRun -Client Both -Shell PowerShell
- name: Install guard tests - name: PowerShell update dry run
run: ./scripts/test-install-guards.sh --summary shell: pwsh
- name: Plugin selection tests run: ./scripts/update.ps1 -Summary -DryRun -Client Both -Shell PowerShell
run: ./scripts/test-plugin-selection.sh --summary
- name: Quick-update and install-option tests
run: |
./scripts/test-quick-update.sh --summary
python3 scripts/test-install-options.py
python3 scripts/test-telemetry.py
python3 scripts/test-semantic-retrieval.py
- name: Managed extension and session-state tests
run: |
python3 scripts/test-managed-extensions.py
python3 scripts/test-session-state.py
- name: Install dry run
run: |
export HOME="$RUNNER_TEMP/isolated-home"
mkdir -p "$HOME"
./scripts/install.sh --summary --dry-run --client both --platform linux
- name: Update dry run
run: |
export HOME="$RUNNER_TEMP/isolated-home"
mkdir -p "$HOME"
./scripts/update.sh --summary --dry-run --client both --platform linux
compatibility-canary:
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: Latest external clients
run: npm install --global @openai/codex@latest
- name: Latest-client schema and dry runs
run: |
REQUIRE_CODEX_SCHEMA=true ./scripts/build.sh --summary
HOME="$RUNNER_TEMP/canary-home" ./scripts/install.sh --summary --dry-run --client both --platform linux
HOME="$RUNNER_TEMP/canary-home" ./scripts/update.sh --summary --dry-run --client both --platform linux
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.
Regular → Executable
View File
File mode changed.