Repository navigation
Merge pull request #1989 from Gentleman-Programming/fix/installer-sta… #2335
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| verify: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| with: | |
| version: 11.1.1 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | |
| with: | |
| node-version: "24" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Run tests | |
| run: pnpm test | |
| env: | |
| GENTLE_PI_REQUIRE_NATIVE_BINARY: "1" | |
| - name: Type check | |
| run: pnpm run typecheck | |
| - name: Verify generated runtime modules | |
| run: pnpm run check:runtime-modules | |
| - name: Verify package contents | |
| run: node scripts/verify-package-files.mjs | |
| - name: Verify packed installation | |
| run: pnpm run test:packed-package | |
| session-transport-macos: | |
| runs-on: macos-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| with: | |
| version: 11.1.1 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | |
| with: | |
| node-version: "24" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| env: | |
| GENTLE_PI_SKIP_GENTLE_AI_INSTALL: "1" | |
| - name: Run Darwin session transport tests | |
| run: pnpm exec node --experimental-strip-types --test tests/agents-session-transport.test.ts tests/agents-session-transport-process.test.ts tests/gentle-agents.test.ts | |
| - name: Verify generated runtime modules | |
| run: pnpm run check:runtime-modules | |
| review-repository-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 | |
| with: | |
| version: 11.1.1 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | |
| with: | |
| node-version: "24" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| env: | |
| GENTLE_PI_SKIP_GENTLE_AI_INSTALL: "1" | |
| - name: Run Windows Git authority probe | |
| shell: pwsh | |
| run: pnpm exec node --experimental-strip-types --test tests/review-repository.test.ts | |
| - name: Run Windows candidate view regression | |
| shell: pwsh | |
| run: | | |
| $output = & pnpm exec node --experimental-strip-types --test --test-reporter=tap --test-name-pattern "candidate owner|candidate contributor root|candidate executable-mode validation|candidate registry forwards explicit Windows mode validation" tests/review-candidate-view.test.ts 2>&1 | |
| $status = $LASTEXITCODE | |
| $output | Write-Output | |
| if ($status -ne 0) { exit $status } | |
| $passes = [regex]::Match(($output -join "`n"), "(?m)^# pass (\d+)$") | |
| if ($output -match "(?m)^1\.\.0$" -or !$passes.Success -or [int]$passes.Groups[1].Value -eq 0) { throw "Windows candidate view regression selected no tests" } | |
| - name: Run Windows native consent boundary | |
| shell: pwsh | |
| run: pnpm exec node --experimental-strip-types --test tests/native-review-consent.test.ts | |
| # The installer suites import only Node built-ins and repository files, so no | |
| # dependency installation is needed. | |
| installer: | |
| name: installer (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | |
| with: | |
| node-version: "24" | |
| - name: Run installer suites | |
| run: node --experimental-strip-types --test tests/install-wizard.test.ts tests/installer-server.test.ts tests/verify-package-files.test.ts tests/installer-probes.test.ts tests/installer-runner.test.ts tests/installer-preflight.test.ts tests/installer-posix-bootstrap.test.ts tests/installer-windows-bootstrap.test.ts | |
| # The native tests skip off Windows; here every one must run and pass. | |
| - name: Require native Windows installer tests | |
| if: runner.os == 'Windows' | |
| shell: pwsh | |
| run: | | |
| $output = & node --experimental-strip-types --test --test-reporter=tap --test-name-pattern "^native Windows" tests/installer-windows-bootstrap.test.ts 2>&1 | |
| $status = $LASTEXITCODE | |
| $output | Write-Output | |
| if ($status -ne 0) { exit $status } | |
| $text = $output -join "`n" | |
| $passes = [regex]::Match($text, "(?m)^# pass (\d+)$") | |
| $skips = [regex]::Match($text, "(?m)^# skipped (\d+)$") | |
| if (!$passes.Success -or [int]$passes.Groups[1].Value -lt 14 -or !$skips.Success -or [int]$skips.Groups[1].Value -ne 0) { throw "Native Windows installer tests were skipped or not selected" } |