Skip to content

Support Client Migration (Client Side) #6256

Support Client Migration (Client Side)

Support Client Migration (Client Side) #6256

Workflow file for this run

name: Linux Packages
on:
workflow_dispatch:
push:
branches:
- main
- release/*
pull_request:
branches:
- main
- release/*
concurrency:
# Cancel any workflow currently in progress for the same PR.
# Allow running concurrently with any other commits.
group: package-linux-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
permissions: read-all
jobs:
build-packages:
name: Generate Linux Packages
needs: []
strategy:
fail-fast: false
matrix:
vec: [
{ config: "Release", os: "ubuntu-22.04", arch: "arm", tls: "quictls" },
{ config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls" },
{ config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls" },
{ config: "Release", os: "ubuntu-24.04", arch: "arm", tls: "quictls", time64: "-Time64Distro" },
{ config: "Release", os: "ubuntu-24.04", arch: "arm64", tls: "quictls", time64: "-Time64Distro" },
{ config: "Release", os: "ubuntu-24.04", arch: "x64", tls: "quictls", xdp: "-UseXdp", time64: "-Time64Distro" },
]
uses: ./.github/workflows/package-reuse-linux.yml
with:
config: ${{ matrix.vec.config }}
os: ${{ matrix.vec.os }}
arch: ${{ matrix.vec.arch }}
tls: ${{ matrix.vec.tls }}
xdp: ${{ matrix.vec.xdp }}
time64: ${{ matrix.vec.time64 }}
test-packages:
name: Test Linux Packages
needs: [build-packages]
strategy:
fail-fast: false
matrix:
vec: [
{ config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls" },
{ config: "Release", os: "ubuntu-24.04", arch: "x64", tls: "quictls", xdp: "-UseXdp" },
]
runs-on: ${{ matrix.vec.os }}
steps:
- name: Download Package
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
with:
name: ${{ matrix.vec.config }}-linux-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-UseSystemOpenSSLCrypto${{ matrix.vec.xdp }}
path: artifacts
- name: Download Build Artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
with:
name: Package-${{ matrix.vec.config }}-linux-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-UseSystemOpenSSLCrypto${{ matrix.vec.xdp }}
path: artifacts
- name: Install Package
run: |
sudo apt-add-repository ppa:lttng/stable-2.13
sudo apt-get update
sudo apt-get install -y lttng-tools
sudo find -name "*.deb" -exec sudo apt install -y ./{} \;
rm artifacts/bin/linux/${{ matrix.vec.arch }}_${{ matrix.vec.config }}_${{ matrix.vec.tls }}/libmsquic.so*
ls artifacts/bin/linux/${{ matrix.vec.arch }}_${{ matrix.vec.config }}_${{ matrix.vec.tls }}
- name: Test
run: |
chmod +x artifacts/bin/linux/${{ matrix.vec.arch }}_${{ matrix.vec.config }}_${{ matrix.vec.tls }}/msquictest
artifacts/bin/linux/${{ matrix.vec.arch }}_${{ matrix.vec.config }}_${{ matrix.vec.tls }}/msquictest --gtest_filter=ParameterValidation.ValidateApi
test-packages-on-docker:
name: Test Linux Packages
needs: [build-packages]
strategy:
fail-fast: false
matrix:
vec: [
# Ubuntu 22.04 - DEB
{ friendlyName: "Ubuntu 22.04 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "ubuntu:22.04" },
{ friendlyName: "Ubuntu 22.04 ARM32", config: "Release", os: "ubuntu-22.04", arch: "arm", tls: "quictls", image: "ubuntu:22.04" },
{ friendlyName: "Ubuntu 22.04 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "ubuntu:22.04" },
# Ubuntu 24.04 - DEB
{ friendlyName: "Ubuntu 24.04 x64", config: "Release", os: "ubuntu-24.04", arch: "x64", tls: "quictls", image: "ubuntu:24.04", xdp: "-UseXdp" },
{ friendlyName: "Ubuntu 24.04 ARM32", config: "Release", os: "ubuntu-24.04", arch: "arm", tls: "quictls", image: "ubuntu:24.04" },
{ friendlyName: "Ubuntu 24.04 ARM64", config: "Release", os: "ubuntu-24.04", arch: "arm64", tls: "quictls", image: "ubuntu:24.04" },
# Debian 12 - DEB
{ friendlyName: "Debian 12 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "debian:12" },
{ friendlyName: "Debian 12 ARM32", config: "Release", os: "ubuntu-22.04", arch: "arm", tls: "quictls", image: "debian:12" },
{ friendlyName: "Debian 12 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "debian:12" },
# Debian 13 - DEB
{ friendlyName: "Debian 13 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "debian:trixie" },
{ friendlyName: "Debian 13 ARM32", config: "Release", os: "ubuntu-24.04", arch: "arm", tls: "quictls", image: "debian:trixie" },
{ friendlyName: "Debian 13 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "debian:trixie" },
# Azure Linux 3.0 - RPM (no arm32)
{ friendlyName: "Azure Linux 3.0 x64", config: "Release", os: "ubuntu-24.04", arch: "x64", tls: "quictls", image: "mcr.microsoft.com/azurelinux/base/core:3.0", xdp: "-UseXdp" },
{ friendlyName: "Azure Linux 3.0 ARM64", config: "Release", os: "ubuntu-24.04", arch: "arm64", tls: "quictls", image: "mcr.microsoft.com/azurelinux/base/core:3.0" },
# CentOS Stream 9 - RPM (no arm32)
{ friendlyName: "CentOS Stream 9 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "quay.io/centos/centos:stream9" },
{ friendlyName: "CentOS Stream 9 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "quay.io/centos/centos:stream9" },
# CentOS Stream 10 - RPM (no arm32)
{ friendlyName: "CentOS Stream 10 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "quay.io/centos/centos:stream10" },
{ friendlyName: "CentOS Stream 10 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "quay.io/centos/centos:stream10" },
# RHEL 9 - RPM (no arm32)
{ friendlyName: "RHEL 9 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "registry.access.redhat.com/ubi9/ubi:latest" },
{ friendlyName: "RHEL 9 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "registry.access.redhat.com/ubi9/ubi:latest" },
# Fedora 42 - RPM (no arm32)
{ friendlyName: "Fedora 42 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "fedora:42" },
{ friendlyName: "Fedora 42 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "fedora:42" },
# Fedora 43 - RPM (no arm32)
{ friendlyName: "Fedora 43 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "fedora:43" },
{ friendlyName: "Fedora 43 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "fedora:43" },
# openSUSE 15.6 - RPM (no arm32)
{ friendlyName: "openSUSE 15.6 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "opensuse/leap:15.6" },
{ friendlyName: "openSUSE 15.6 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "opensuse/leap:15.6" },
# openSUSE 16.0 - RPM (no arm32)
{ friendlyName: "openSUSE 16.0 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "opensuse/leap:16.0" },
{ friendlyName: "openSUSE 16.0 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "opensuse/leap:16.0" },
# SLES 15.6 - RPM (no arm32)
{ friendlyName: "SLES 15.6 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "registry.suse.com/suse/sle15:15.6" },
{ friendlyName: "SLES 15.6 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "registry.suse.com/suse/sle15:15.6" },
# SLES 15.7 - RPM (no arm32)
{ friendlyName: "SLES 15.7 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "registry.suse.com/suse/sle15:15.7" },
{ friendlyName: "SLES 15.7 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "registry.suse.com/suse/sle15:15.7" },
# SLES 16 - RPM (no arm32)
{ friendlyName: "SLES 16 x64", config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "quictls", image: "registry.suse.com/bci/bci-base:16.0" },
{ friendlyName: "SLES 16 ARM64", config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "quictls", image: "registry.suse.com/bci/bci-base:16.0" },
]
runs-on: ${{ matrix.vec.os }}
steps:
- name: Checkout Repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
- name: Download Package
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
with:
name: Package-${{ matrix.vec.config }}-linux-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-UseSystemOpenSSLCrypto${{ matrix.vec.xdp }}
path: artifacts
- name: Download Build Artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
with:
name: ${{ matrix.vec.config }}-linux-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-UseSystemOpenSSLCrypto${{ matrix.vec.xdp }}
path: artifacts
- name: Set up QEMU
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130
- name: Set up .NET
uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602
with:
dotnet-version: |
10.0.x
9.0.x
- name: Build .NET QUIC Test Projects (Self-Contained)
run: |
# Map arch to runtime identifier
case "${{ matrix.vec.arch }}" in
x64) RID="linux-x64" ;;
arm64) RID="linux-arm64" ;;
arm) RID="linux-arm" ;;
esac
# Build .NET 10 self-contained executable
pushd src/cs/QuicSimpleTest
dotnet publish QuicHello.net10.0.csproj -r $RID -c ${{ matrix.vec.config }} -o artifacts/net10.0 --self-contained true /p:PublishSingleFile=true
popd
# Build .NET 9 self-contained executable
pushd src/cs/QuicSimpleTest
dotnet publish QuicHello.net9.0.csproj -r $RID -c ${{ matrix.vec.config }} -o artifacts/net9.0 --self-contained true /p:PublishSingleFile=true
popd
- name: Docker Run
run: |
# Map arch to Docker platform
case "${{ matrix.vec.arch }}" in
x64) PLATFORM="linux/amd64" ;;
arm64) PLATFORM="linux/arm64" ;;
arm) PLATFORM="linux/arm/v7" ;;
esac
docker run --platform $PLATFORM -v $(pwd):/main ${{ matrix.vec.image }} /main/scripts/docker-script.sh ${{ matrix.vec.arch }} ${{ matrix.vec.config }} ${{ matrix.vec.tls }}
Complete:
name: Package Linux Complete
if: always()
needs: [build-packages, test-packages, test-packages-on-docker]
runs-on: ubuntu-latest
permissions: {} # No need for any permissions.
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe
with:
jobs: ${{ toJSON(needs) }}