diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index e582fd6..6860198 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI +name: CI on: push: @@ -12,85 +12,36 @@ jobs: 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 - - 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 + shell: bash + run: git ls-files -z '*.sh' | xargs -0 -r -n1 bash -n - 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 - ./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 - python ./scripts/test-semantic-retrieval.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 - 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 + $ErrorActionPreference = 'Stop' + $failed = $false + foreach ($file in (git ls-files '*.ps1')) { + $tokens = $null + $parseErrors = $null + [System.Management.Automation.Language.Parser]::ParseFile((Join-Path $PWD $file), [ref]$tokens, [ref]$parseErrors) | Out-Null + if ($parseErrors.Count) { + $parseErrors | ForEach-Object { Write-Host "${file}: $_" } + $failed = $true + } + } + if ($failed) { exit 1 } + - name: Build + shell: bash + run: bash scripts/build.sh --summary + - name: Bash install dry run + shell: bash + run: bash scripts/install.sh --summary --dry-run --client both --shell bash + - name: Bash update dry run + shell: bash + run: bash scripts/update.sh --summary --dry-run --client both --shell bash + - name: PowerShell install dry run + shell: pwsh + run: ./scripts/install.ps1 -Summary -DryRun -Client Both -Shell PowerShell + - name: PowerShell update dry run + shell: pwsh + run: ./scripts/update.ps1 -Summary -DryRun -Client Both -Shell PowerShell diff --git a/scripts/prompt-budget.sh b/scripts/prompt-budget.sh old mode 100644 new mode 100755 diff --git a/scripts/repository-context.sh b/scripts/repository-context.sh old mode 100644 new mode 100755 diff --git a/scripts/session-state.sh b/scripts/session-state.sh old mode 100644 new mode 100755 diff --git a/scripts/telemetry.sh b/scripts/telemetry.sh old mode 100644 new mode 100755 diff --git a/scripts/test-install-guards.sh b/scripts/test-install-guards.sh old mode 100644 new mode 100755 diff --git a/scripts/test-plugin-selection.sh b/scripts/test-plugin-selection.sh old mode 100644 new mode 100755 diff --git a/scripts/test-quick-update.sh b/scripts/test-quick-update.sh old mode 100644 new mode 100755 diff --git a/scripts/test-shell-packages.sh b/scripts/test-shell-packages.sh old mode 100644 new mode 100755 diff --git a/scripts/update.sh b/scripts/update.sh old mode 100644 new mode 100755