Repository navigation
agentHost: Run the WSL Kerberos proxy smoke tests in CI - #345511
Conversation
|
One or more custom setup steps configured for this repository failed during this Copilot code review run: Setup steps run before each review. If the review above is missing context, or no review was posted at all, the failing step above may be the cause. See the workflow run for failure details, fix your setup steps configuration, and re-request a review. Note You can configure setup steps for Copilot code review separately from Copilot cloud agent with a |
There was a problem hiding this comment.
🟡 Changes recommended
When both smoke runs execute, the second overwrites the main Electron run’s JUnit report, causing PublishTestResults to lose the main run’s results.
1 open issue
What changed in this PR
This PR brings the existing WSL Kerberos proxy smoke suites into CI, covering Agent Host use of the Windows client’s proxy, Kerberos tickets, and certificates.
Changes:
- Provisions the required WSL packages and supports extracting a matching Linux server from product-build artifacts.
- Runs the Agents Window suite in GitHub CI and both suites in eligible Azure product builds, with checkpoint support.
- Adds suite selection, preserves earlier smoke logs, and reports client/server commit mismatches early.
| File | Description |
|---|---|
test/smoke/wslDevContainer.ps1 |
Updates the pinned server, installs proxy-test dependencies, and adds server extraction. |
test/smoke/src/areas/agentsWindow/remoteDevContainerFixtures.ts |
Detects packaged client/server commit mismatches. |
test/smoke/scripts/run-agents-window-wsl-kerberos-proxy.ps1 |
Adds suite selection and preserves earlier smoke logs. |
test/smoke/README.md |
Documents suite selection, compatibility requirements, and CI coverage. |
build/lib/test/testCheckpointTemplates.test.ts |
Updates checkpoint and WSL lifecycle expectations. |
build/azure-pipelines/win32/steps/product-build-win32-test.yml |
Adds the checkpointed Kerberos run and matching-server setup. |
build/azure-pipelines/win32/product-build-win32-test.yml |
Forwards Linux compilation artifact availability. |
build/azure-pipelines/product-build.yml |
Enables the checkpoint and matching-server support. |
build/azure-pipelines/product-build-template.yml |
Mirrors the product pipeline wiring. |
build/azure-pipelines/product-build-ado-ci.yml |
Enables the Kerberos smoke checkpoint in Azure CI. |
build/azure-pipelines/common/testCheckpoint.ts |
Registers the new checkpoint identifier. |
build/azure-pipelines/common/publish-test-checkpoint.yml |
Allows publishing the new checkpoint. |
.github/workflows/pr-win32-test.yml |
Runs the Agents Window Kerberos suite in Windows smoke shard 1. |
Review effort: Balanced
ae6a5e4 to
0142955
Compare
59ba96e to
90bf37b
Compare
The Windows smoke jobs that provision WSL now also run the Kerberos proxy smoke tests, against a pinned server with the agent host's client proxy support and a distribution with a KDC and Squid. A packaged server only accepts a packaged client of its own commit, so pull request CI runs the Agents Window suite, and the Azure product build also runs the editor window suite with the Linux server of its own Linux x64 compile job. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CI agents have a JDK on the PATH whose klist does not know `klist get`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… proxy smoke tests The smoke tests write their JUnit report to the same file for every desktop run, so the WSL Kerberos proxy run replaced the report of the main Electron smoke run in the same CI job and PublishTestResults lost its results. Keep the earlier report aside during the run and file this run's report as *-desktop-smoke-tests-wsl-kerberos-proxy-results.xml. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
90bf37b to
6347579
Compare

Follow-up to #345225, which added the WSL Kerberos proxy smoke tests without running them in CI. CI and smoke test changes only; nothing here is needed on
release/1.145.Changes
test/smoke/wslDevContainer.ps1pins Insiders67710841ad0(instead of0469440342), whose Agent Host has the client proxy, Kerberos and certificate support. It installskrb5-kdc,krb5-admin-server,squid-opensslandopensslinto the CI distribution, with apolicy-rc.dthat keeps the packages from starting their services. The WSL Dev Container suite uses the same server.pr-win32-test.yml, smoke shard 1): after the main Electron smoke run, the runner runs the Agents Window suite (-Suites AgentsWindow).product-build-win32-test.yml, Windows x64 Smoke job): a newsmoke-wsl-kerberos-proxycheckpoint runs both suites with the packaged client. The editor window suite uses the Linux server of the same run's Linux x64 compile job: the job waits forcompilation_linux_x64(normally already published before the Windows smoke job starts), downloads onlybuilds.tar.gz, andwslDevContainer.ps1 -Operation AddServerextracts the server into the distribution. Runs without a Linux x64 product build (CI builds, Windows-only builds) run only the Agents Window suite.smoke-electronorsmoke-wsl-kerberos-proxystill has to pass, and is cleaned up after both. The new ID is added to the Windows x64 Smoke jobs of all three pipelines and to the checkpoint lists and template tests.-Suites All|AgentsWindow|EditorWindowselects the suites. The runner moves an earlier.build/logs/smoke-tests-electronaside during its run and files its own smoke logs under.build/logs/agents-window-wsl-kerberos-proxy, so the main smoke run's logs survive. Likewise, it keeps the main run's JUnit report and files its own as*-desktop-smoke-tests-wsl-kerberos-proxy-results.xml, soPublishTestResultsgets both.How to test
Locally, on Windows with an elevated PowerShell, emulate the CI job: run
test\smoke\wslDevContainer.ps1withGITHUB_WORKSPACE,GITHUB_RUN_ID,GITHUB_RUN_ATTEMPTandGITHUB_OUTPUTset, thentest\smoke\scripts\run-agents-window-wsl-kerberos-proxy.ps1 -Distribution <distro> -WslServerPath /opt/vscode-smoke-server, with--build <Insiders 67710841ad0 client>for both suites or-Suites AgentsWindowfrom source, and clean up with-Operation Cleanup.Validation
Rebased from
release/1.145ontomain; the only conflict was the README's npm commands (now pnpm). The runner already callspnpm.cmdonmain.On
main:node --test build/lib/test/testCheckpointTemplates.test.ts build/lib/test/testCheckpoint.test.ts: 29 passing, 1 failing. The failure,only the product test steps use checkpoints, compares\and/path separators and fails on Windows without this change too.pnpm run typecheckinbuild: passed.pnpm run compileintest/smoke: passed.pnpm run eslinton the changed TypeScript files: passed.main(63475797ee6) after test: bound and retry apt in the WSL smoke setup #345598 bounded and retried apt inwslDevContainer.ps1: the Kerberos and Squid packages join$aptPackages, andpolicy-rc.dnow wraps only the final install.63475797ee6): all checks passed. In Electron smoke shard 1, the WSL setup installed the packages withpolicy-rc.ddenying their services, and the Kerberos step passed the Agents Window suite ("1 passing").63475797ee6, Windows x64 and Linux x64, tests on, no publishing): all 23 jobs passed. In the Windows x64 Smoke job, the Kerberos step passed both suites with the packaged client and the Linux x64 server of the same run, and "Publish Tests Results" published two test runs: the main Electron smoke run (91 results) and the Kerberos run (2). The earlier build 491824 (90bf37b2dab) passed the same way.Before the rebase, on
release/1.145with the same scripts (npm instead of pnpm):wslDevContainer.ps1provisioned the Ubuntu 22.04 distribution with the new packages and pinned server. From source, the Agents Window suite passed; the editor window suite failed with "Unauthorized client refused", which led to-Suites AgentsWindowfor GitHub. With the Insiders67710841ad0client (--build), both suites passed, and the script verified the PAC fetch, the Kerberos-authenticated tunnels through Squid and the KDC tickets issued to Windows. Cleanup removed the distribution and the Windows configuration.testCheckpoint.test.tsand that the CI image's JDKklistshadows Windows'klist.exe, so the runner now calls the latter by path.AddServer), and the Kerberos step passed both suites with the packaged client and the Linux x64 server of the same run. Copilot's review then found that this run replaced the main smoke run's JUnit report, which the last commit fixes.