name: CI on: push: branches: [main] pull_request: schedule: - cron: '23 4 * * 1' jobs: linux: runs-on: ubuntu-latest steps: - 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 run: find scripts shared/hooks -name '*.sh' -print0 | xargs -0 -n1 bash -n - name: Capability checks run: ./scripts/check-capabilities.sh --skip-external - 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 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 run: | $env:REQUIRE_CODEX_SCHEMA = 'true' ./scripts/check-capabilities.ps1 -SkipExternal ./scripts/build.ps1 -Summary ./scripts/doctor.ps1 -Summary ./scripts/test-shell-packages.ps1 -Summary ./scripts/test-managed-install.ps1 -Summary ./scripts/test-build-validation.ps1 -Summary ./scripts/test-install-guards.ps1 -Summary ./scripts/test-plugin-selection.ps1 -Summary ./scripts/test-quick-update.ps1 -Summary python ./scripts/test-install-options.py python ./scripts/test-quick-update.py python ./scripts/test-managed-extensions.py python ./scripts/test-session-state.py python ./scripts/test-telemetry.py ./scripts/install.ps1 -Summary -DryRun -Client Both -Shell PowerShell ./scripts/update.ps1 -Summary -DryRun -Client Both -Shell PowerShell - name: Shell package tests run: ./scripts/test-shell-packages.sh --summary - name: Managed manifest tests run: ./scripts/test-managed-install.sh --summary - name: Build validation tests run: ./scripts/test-build-validation.sh --summary - name: Install guard tests run: ./scripts/test-install-guards.sh --summary - name: Plugin selection tests 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 - 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