Commit Graph

5 Commits

Author SHA1 Message Date
Blue
d7a05edf50 Use TAEF ignore properties to skip tests for WSL1 / WSL2 based on testpass version property (#40459)
* Use TAEF ignore properties to skip tests for WSL1 / WSL2 based on testpass version

* Fix condition

* Update comment

* Fix mixed filters
2026-05-11 13:09:51 -07:00
Ben Hillis
358ab87d40 Add WSLC (WSL Containers) feature (#40366)
WSLC is a container runtime built on the Windows Subsystem for Linux, enabling Windows applications to create and manage Linux containers through a native Windows API surface.

Key components:
- wslc.exe: CLI for managing containers, images, volumes, and networks
  (build, run, stop, inspect, push/pull from registries)
- wslcsession.exe: Per-user Windows service hosting container lifecycle,
  storage management, and networking
- WSLC SDK: C++ and C# client libraries with NuGet packaging for
  programmatic container management
- Container networking: port forwarding, DNS tunneling, virtio
  networking, and HCN integration
- Storage: VHD-backed volumes, virtiofs file sharing, overlayfs layers
- GPU passthrough and device host proxy support

Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com>
Co-authored-by: 1wizkid <richard.fricks@hotmail.com>
Co-authored-by: AmirMS <104940545+AmelBawa-msft@users.noreply.github.com>
Co-authored-by: beena352 <beenachauhan@microsoft.com>
Co-authored-by: Blue <OneBlue@users.noreply.github.com>
Co-authored-by: Craig Loewen <crloewen@microsoft.com>
Co-authored-by: Darshak Bhatti <47045043+dabhattimsft@users.noreply.github.com>
Co-authored-by: David Bennett <dbenne@microsoft.com>
Co-authored-by: Feng Wang <wang6922@outlook.com>
Co-authored-by: Flor Chacon <14323496+florelis@users.noreply.github.com>
Co-authored-by: John Stephens <johnstep@microsoft.com>
Co-authored-by: JohnMcPMS <johnmcp@microsoft.com>
Co-authored-by: Kevin Vega <40717198+kvega005@users.noreply.github.com>
Co-authored-by: Pooja Trivedi <poojatrivedi@gmail.com>
Co-authored-by: ramesh-ramn <raman.ramesh@gmail.com>
Co-authored-by: Richard Fricks <richfr@microsoft.com>
Co-authored-by: yao-msft <50888816+yao-msft@users.noreply.github.com>
2026-04-30 13:34:43 -07:00
Ben Hillis
813070c88b Refactor tests: use TAEF metadata for WSL version filtering (#40140)
Cherry-pick WSL1/WSL2 test changes from 9c4dba91 (feature/wsl-for-apps).

Replace runtime WSL1_TEST_ONLY()/WSL2_TEST_ONLY() skip macros with
WSL1_TEST_METHOD()/WSL2_TEST_METHOD() TAEF metadata macros. This moves
version filtering to the test runner level via /select: queries, so
inapplicable tests are excluded entirely instead of appearing as skipped.

Updated files:
- test/windows/Common.h: New macros + removed old skip macros
- test/windows/*.cpp: Converted all test methods
- tools/test/run-tests.ps1: Auto-add /select: when no user filter
- cloudtest/TestGroup.xml.in: Add version filter to TAEF args
- test/README.md: Document new macros

Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-10 11:26:50 -07:00
Ben Hillis
6bc39a6bd7 Split x64/arm64 builds into parallel pipeline stages (#14497)
* Split x64/arm64 builds into parallel pipeline stages

Restructure the CI/CD pipeline to build x64 and arm64 in parallel
instead of sequentially, reducing end-to-end build time.

Pipeline shapes:
- PR: build_x64 ∥ build_arm64 → test (uses installer.msix directly)
- Nightly: build_x64 ∥ build_arm64 → package → test (dev-cert bundle)
- Release: build_x64 ∥ build_arm64 → package → test (ESRP-signed bundle)

Key changes:
- Extract shared build-job.yml template parameterized by platform
- Add package-stage.yml that creates msixbundle from both platform
  artifacts, ESRP-signs for release, dev-cert signs for nightly
- PR tests run immediately after x64 build using installer.msix
  (no package stage, no bundle needed)
- Release/nightly tests wait for the package stage and test the real
  signed bundle that gets published
- CloudTest configs are parameterized: release tests pull the bundle
  from the [package] artifact, PR tests use installer.msix from [drop]
- arm64 + formatting checks always run in parallel with x64 but don't
  block the PR test gate
- CodeQL runs in the arm64 stage (off the critical path)
- flight-stage and nuget-stage updated for new stage names

* formatting

* Remove redundant runtime conditions on release-only tasks

These tasks are already wrapped in compile-time conditionals which
prevent them from being added to the pipeline definition for
non-release builds. The runtime condition checks can never evaluate
to false at that point, so they are pure noise.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address review feedback from OneBlue

- Remove wslcsdk NuGet staging (wslc is not in master)
- Always include [package] provider in TestMap.xml.in instead of
  conditionally injecting via PACKAGE_PROVIDER_BLOCK cmake variable.
  PR builds simply use [drop] as TEST_PACKAGE_PROVIDER; the [package]
  provider exists but is unused.
- Add BUNDLE_ONLY cmake option so the package pipeline stage reuses
  cmake's existing bundle target instead of forking makeappx logic.
  This locks the SDK version via cmake (CMAKE_SYSTEM_VERSION) and
  keeps bundle creation logic in one place (msixinstaller/CMakeLists.txt).
  The pipeline now copies msix files to expected paths, runs a fast
  cmake configure with -DBUNDLE_ONLY=TRUE, and builds the bundle target.
- Remove dead NuGet binary restore step in package stage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address PR review feedback

- Fix PACKAGE_VERSION regex: escape dots so only A.B.C.D is accepted
- Consolidate CMake defaults (build type, config types, output dir)
  before BUNDLE_ONLY block to avoid duplication
- Nightly tests now use the full bundle from the package stage instead
  of installer.msix (new INCLUDE_PACKAGE_STAGE cmake variable)
- Package stage reuses version output from build stage instead of
  recomputing it

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-09 13:31:55 -07:00
WSL Team
697572d664 Initial open source commit for WSL.
Many Microsoft employees have contributed to the Windows Subsystem for Linux, this commit is the result of their work since 2016.

The entire history of the Windows Subsystem for Linux can't be shared here, but here's an overview of WSL's history after it moved to it own repository in 2021:

Number of commits on the main branch: 2930
Number of contributors: 31

Head over https://github.com/microsoft/WSL/releases for a more detailed history of the features added to WSL since 2021.
2025-05-15 12:09:45 -07:00