Skip to content
This repository has been archived by the owner on May 2, 2024. It is now read-only.

Latest commit

 

History

History
42 lines (27 loc) · 3.54 KB

FLOW.md

File metadata and controls

42 lines (27 loc) · 3.54 KB

This repo is a thin wrapper around https://github.com/microsoft/msquic . It is used to produce a package for testing purposes, when an official MsQuic package is not available. At this moment, there are two main use cases:

  • Consuming latest MsQuic main to pick up feature work and general improvements to feed main branch of runtime,
  • Building the package to test on Linux distros that don't have an official package yet (such as Alpine).

The build will create signed NuGet packages to be consumed by Windows and unsigned Linux and MacOS packages. Neither of them are meant for direct consumption.

On Windows, release versions of .NET use official MsQuic packages that are published to NuGet. Windows package is consumed by .NET runtime and msquic.dll is part of runtime distribution on Windows. In order to switch to the private package within the dotnet/runtime repo, you need to change the value of the UseQuicTransportPackage flag to true.

For Linux, there is currently no automated workflow. Signed packages are published on https://packages.microsoft.com/. Linux users should use packages from there either directly or via their package manager.

For more info, see System.Net.Quic readme.

Build & Updates

To build this repro, make sure you checkout appropriate branch RECURSIVELY. MsQuic code is pulled in as submodule as well as it uses submodules internally. The build currently depends on PowerShell as well as it needs all the prerequisities required by MsQuic. (https://github.com/microsoft/msquic/blob/main/docs/BUILD.md)

To build it, run top-level build script. That essentially calls Build-native from src/System.Net.MsQuic.Transport/System.Net.MsQuic.Transport.csproj To see what is going on with official Azure pipeline you can check eng/pipelines/msquic.yml

to update msquic you can use following sequence

cd  src/msquic
git fetch origin
git checkout main (or what ever branch or tag)
cd ../..
git add src/msquic

At this point, full build is recommended and changes should be staged for PR. You can use git log to check whether msquic has changed. Also GitHub UI shows the actual changes instead of just updated directory like the command line tool.

When changes are submitted, official build will kick in and it will produce updated NuGet package. To see the latest package and its history look at https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet9-transport/NuGet/System.Net.MsQuic.Transport

The packages should flow to runtime repo via DARC e.g. there should eventually be maestro PR to updated reference. It is also always possible to update the runtime directly with change similar to dotnet/runtime#57541

There is currently no process for updating Linux packages.

Updating test images

On Linux for now we only run tests in cotainers. To pick up change, one need to rebuild appropriate container and update pipeline configuration to point at update image. To rebuild container without submitting changes, one needs to do manual pipeline run (internal) with added noCache = true variable.