msquic/.azure/azure-pipelines.ci.yml

882 строки
22 KiB
YAML

#
# Continuous Integration (CI)
# This pipeline builds and validates MsQuic for all configurations.
#
trigger:
batch: true
branches:
include:
- main
- release/*
paths:
exclude:
- .azure/obtemplates/*
- .azure/OneBranch*
- src/plugins/*
- docs/*
- README.md
pr:
branches:
include:
- main
- release/*
paths:
exclude:
- .azure/obtemplates/*
- .azure/OneBranch*
- src/plugins/*
- docs/*
- README.md
# Periodically rebuild release branches to make sure they are functional.
schedules:
- cron: "0 0 * * Mon"
displayName: Weekly Release Build
branches:
include:
- release/*
always: true
name: 0.$(Date:yyyy).$(Date:MM).$(DayOfMonth).$(Rev:rr).0
stages:
#
# Builds
#
- stage: build_winkernel_release
displayName: Build Windows Drivers - Release
dependsOn: []
jobs:
- template: ./templates/build-config-winkernel.yml
parameters:
arch: x64
config: Release
- stage: build_winkernel_debug
displayName: Build Windows Drivers - Debug
dependsOn: []
jobs:
- template: ./templates/build-config-winkernel.yml
parameters:
arch: x64
config: Debug
- stage: build_winkernel_nontest
displayName: Build Windows Drivers - Non Tested
dependsOn: []
jobs:
- template: ./templates/build-config-winkernel.yml
parameters:
arch: arm64
- stage: build_windows_release
displayName: Build Windows - Release
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Release
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl
config: Release
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Release
extraName: 'static'
extraBuildArgs: -EnableTelemetryAsserts -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl
config: Release
extraName: 'static'
extraBuildArgs: -EnableTelemetryAsserts -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Release
extraName: 'xdp'
extraPrepareArgs: -InstallXdpSdk
extraBuildArgs: -EnableTelemetryAsserts -UseXdp -ExtraArtifactDir xdp
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl
config: Release
extraName: 'xdp'
extraPrepareArgs: -InstallXdpSdk
extraBuildArgs: -EnableTelemetryAsserts -UseXdp -ExtraArtifactDir xdp
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl3
config: Release
extraBuildArgs: -EnableTelemetryAsserts
- stage: build_windows_debug
displayName: Build Windows - Debug
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Debug
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Debug
extraName: 'sanitize'
extraBuildArgs: -EnableTelemetryAsserts -DynamicCRT -SanitizeAddress -ExtraArtifactDir Sanitize
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl
config: Debug
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Debug
extraName: 'static'
extraBuildArgs: -EnableTelemetryAsserts -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl
config: Debug
extraName: 'static'
extraBuildArgs: -EnableTelemetryAsserts -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: schannel
config: Debug
extraName: 'xdp'
extraPrepareArgs: -InstallXdpSdk
extraBuildArgs: -EnableTelemetryAsserts -UseXdp -ExtraArtifactDir Xdp
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x64
tls: openssl3
config: Debug
extraBuildArgs: -EnableTelemetryAsserts
- stage: build_windows_nontest
displayName: Build Windows - Non Tested
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x86
tls: schannel
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: arm
tls: schannel
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: arm64
tls: schannel
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2022
platform: windows
arch: arm64ec
tls: schannel
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: uwp
arch: x64
tls: schannel
extraPrepareArgs: -DisableTest
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: uwp
arch: x64
tls: openssl
extraPrepareArgs: -DisableTest
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: uwp
arch: x86
tls: openssl
extraPrepareArgs: -DisableTest
extraBuildArgs: -EnableTelemetryAsserts
# - template: ./templates/build-config-user.yml
# parameters:
# image: windows-2019
# platform: uwp
# arch: arm64
# tls: openssl
# extraPrepareArgs: -DisableTest
# extraBuildArgs: -EnableTelemetryAsserts
# - template: ./templates/build-config-user.yml
# parameters:
# image: windows-2019
# platform: windows
# arch: arm64
# tls: openssl
# extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2019
platform: windows
arch: x86
tls: openssl
extraBuildArgs: -EnableTelemetryAsserts
- template: ./templates/build-config-user.yml
parameters:
image: windows-2022
platform: windows
arch: x64
tls: openssl
extraName: 'VS2022_OpenSSL'
extraBuildArgs: -EnableTelemetryAsserts -ExtraArtifactDir VS2022_OpenSSL
- template: ./templates/build-config-user.yml
parameters:
image: windows-2022
platform: windows
arch: x64
tls: schannel
extraName: 'VS2022_Schannel'
extraBuildArgs: -EnableTelemetryAsserts -ExtraArtifactDir VS2022_Schannel
- stage: build_linux_release
displayName: Build Linux - Release
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
config: Release
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl3
config: Release
- stage: build_linux_debug
displayName: Build Linux - Debug
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
config: Debug
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
extraName: 'sanitize'
extraBuildArgs: -SanitizeAddress -ExtraArtifactDir Sanitize
config: Debug
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
config: Debug
extraName: 'systemopenssl'
extraBuildArgs: -UseSystemOpenSSLCrypto -ExtraArtifactDir SystemCrypto
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-22.04
platform: linux
arch: x64
tls: openssl3
config: Debug
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-22.04
platform: linux
arch: x64
tls: openssl3
config: Debug
extraName: 'systemopenssl'
extraBuildArgs: -UseSystemOpenSSLCrypto -ExtraArtifactDir SystemCrypto
- stage: build_linux_nontest
displayName: Build Linux - Non Tested
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
extraBuildArgs: -OfficialRelease
extraName: 'official'
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
extraBuildArgs: -Clang -ExtraArtifactDir Clang
extraName: 'clang'
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: android
arch: arm64
tls: openssl
extraBuildArgs: -DisableLogs
extraName: 'android'
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: arm64
tls: openssl
extraBuildArgs: -DisableLogs -ToolchainFile cmake/toolchains/aarch64-linux.cmake -OneBranch
extraPrepareArgs: -InstallArm64Toolchain
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: android
arch: x64
tls: openssl
extraBuildArgs: -DisableLogs
extraName: 'android'
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
extraBuildArgs: -CodeCheck
skipArtifacts: true
config: Debug
extraName: 'codecheck'
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
config: Release
extraName: 'systemopenssl'
extraBuildArgs: -UseSystemOpenSSLCrypto -ExtraArtifactDir SystemCrypto
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-20.04
platform: linux
arch: x64
tls: openssl
extraName: 'static'
extraBuildArgs: -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-22.04
platform: linux
arch: x64
tls: openssl
- template: ./templates/build-config-user.yml
parameters:
image: ubuntu-22.04
platform: linux
arch: x64
tls: openssl3
extraName: 'ubuntu2204'
extraBuildArgs: -UseSystemOpenSSLCrypto -ExtraArtifactDir ubuntu2204
ubuntuVersion: 22.04
- stage: build_macos_release
displayName: Build macOS - Release
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: macos
arch: x64
tls: openssl
config: Release
- stage: build_macos_debug
displayName: Build macOS - Debug
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: macos
arch: x64
tls: openssl
config: Debug
- stage: build_macos_nontest
displayName: Build macOS - NonTest
dependsOn: []
jobs:
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: macos
arch: arm64
tls: openssl
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: macos
arch: arm64
tls: openssl
extraName: 'stdout'
extraBuildArgs: -LoggingType stdout
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: macos
arch: x64
tls: openssl
extraName: 'static'
extraBuildArgs: -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: macos
arch: arm64
tls: openssl
extraName: 'static'
extraBuildArgs: -Static -ExtraArtifactDir Static
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: ios
arch: arm64
tls: openssl
- template: ./templates/build-config-user.yml
parameters:
image: macOS-12
platform: ios
arch: x64
tls: openssl
- stage: merge_darwin
displayName: Merge Darwin (macOS)
dependsOn:
- build_macos_nontest
- build_macos_release
- build_macos_debug
jobs:
- template: ./templates/merge-darwin.yml
parameters:
image: macOS-12
- stage: darwin_frameworks
displayName: Darwin Frameworks
dependsOn:
- merge_darwin
jobs:
- template: ./templates/build-darwin-framework.yml
parameters:
image: macOS-12
#
# Release BVTs
#
- stage: test_bvt_release
displayName: BVT Release
dependsOn:
- build_windows_release
- build_linux_release
jobs:
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: schannel
logProfile: Full.Light
config: Release
extraTestArgs: -SkipUnitTests -EnableSystemVerifier -Filter -*ValidateConfiguration:*ValidAlpnLengths:*ResumeRejection*:*ConnectClientCertificate*
- template: ./templates/run-bvt.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
logProfile: Full.Light
config: Release
extraTestArgs: -SkipUnitTests
- template: ./templates/run-bvt.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl
config: Release
- template: ./templates/run-bvt.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl3
config: Release
- stage: test_bvt_winkernel_release
displayName: BVT Windows Kernel Release
dependsOn:
- build_winkernel_release
- build_windows_release
jobs:
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: schannel
logProfile: Full.Light
config: Release
kernel: true
extraTestArgs: -Kernel -EnableSystemVerifier -Filter -*ValidateConfiguration:*ValidAlpnLengths:*ResumeRejection*:*ClientCertificate*:*LoadBalanced*
- template: ./templates/run-bvt.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
logProfile: Full.Light
config: Release
kernel: true
extraTestArgs: -Kernel
#
# Kernel Build Verification Tests
#
- stage: test_bvt_kernel
displayName: BVT Kernel
dependsOn:
- build_winkernel_debug
- build_windows_debug
jobs:
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: schannel
logProfile: Full.Light
extraTestArgs: -Kernel -EnableSystemVerifier -Filter -*ValidateConfiguration:*ValidAlpnLengths:*ResumeRejection*:*ClientCertificate*:*LoadBalanced*
kernel: true
- template: ./templates/run-bvt.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
logProfile: Full.Light
extraTestArgs: -Kernel -Filter -*NthAllocFail*
kernel: true
#
# Build Verification Tests
#
- stage: test_bvt
displayName: BVT
dependsOn:
- build_windows_debug
- build_linux_debug
- build_macos_debug
jobs:
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: schannel
logProfile: Full.Light
extraArtifactDir: '_Sanitize'
extraTestArgs: -ExtraArtifactDir Sanitize -Filter -*ValidateConfiguration:*ValidAlpnLengths:*ResumeRejection*:*ClientCertificate*:*LoadBalanced*:TlsTest.InProc*
- template: ./templates/run-bvt.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
logProfile: Full.Light
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: schannel
logProfile: Full.Light
extraArtifactDir: '_Xdp'
extraPrepareArgs: -InstallDuoNic -InstallXdpDriver
# TODO: reenable these testcases: *Unreachable*:*DrillInitialPacket*
extraTestArgs: -DuoNic -Filter -*ValidateConfiguration:*ValidAlpnLengths:*ResumeRejection*:*ClientCertificate*:*LoadBalanced*:*Tcp*:*Unreachable*:*DrillInitialPacket*:TlsTest.InProc* -ExtraArtifactDir Xdp
- template: ./templates/run-bvt.yml
parameters:
image: windows-2019
platform: windows
tls: openssl
logProfile: Full.Light
extraTestArgs: -Filter -*Unreachable/0
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: openssl
logProfile: Full.Light
- template: ./templates/run-bvt.yml
parameters:
image: windows-2022
platform: windows
tls: openssl3
logProfile: Full.Light
extraTestArgs: -Filter -*LoadBalanced*:*ResumeRejection*:*Reject0Rtt*
- template: ./templates/run-bvt.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl
- template: ./templates/run-bvt.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl
extraArtifactDir: '_Sanitize'
extraTestArgs: -ExtraArtifactDir Sanitize
- template: ./templates/run-bvt.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl
extraArtifactDir: '_SystemCrypto'
extraTestArgs: -ExtraArtifactDir SystemCrypto
- template: ./templates/run-bvt.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl3
- template: ./templates/run-bvt.yml
parameters:
image: macOS-12
platform: macos
tls: openssl
logProfile: None
extraTestArgs: -ErrorsAsWarnings
#
# SpinQuic Tests
#
- stage: spinquic
displayName: SpinQuic
dependsOn:
- build_windows_debug
jobs:
- template: ./templates/run-spinquic.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
allocFail: 100
#
# DotNet Tests
#
- stage: dotnet
displayName: DotNet Tests
dependsOn:
- build_windows_debug
- build_linux_debug
- merge_darwin
jobs:
- template: ./templates/run-dotnet.yml
parameters:
image: windows-latest
platform: windows
tls: openssl
- template: ./templates/run-dotnet.yml
parameters:
image: windows-latest
platform: windows
tls: openssl3
- template: ./templates/run-dotnet.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl
- template: ./templates/run-dotnet.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl3
- template: ./templates/run-dotnet.yml
parameters:
image: macOS-12
platform: macos
arch: universal
tls: openssl
#
# Code Coverage
#
- stage: codecoverage
displayName: Code Coverage
dependsOn:
- build_windows_debug
jobs:
- template: ./templates/run-bvt.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
codeCoverage: true
extraPrepareArgs: -InstallCodeCoverage
- template: ./templates/run-spinquic.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
allocFail: 100
codeCoverage: true
extraPrepareArgs: -InstallCodeCoverage
- template: ./templates/merge-publish-coverage.yml
parameters:
image: windows-2019
platform: windows
config: Debug
arch: x64
tls: schannel
#
# QuicInterop
#
- stage: quicinterop
displayName: QuicInterop
dependsOn:
- build_windows_release
- build_linux_release
- build_macos_release
jobs:
- template: ./templates/run-quicinterop.yml
parameters:
pool: MsQuic-Win-Latest
platform: windows
tls: schannel
- template: ./templates/run-quicinterop.yml
parameters:
image: windows-2019
platform: windows
tls: openssl
- template: ./templates/run-quicinterop.yml
parameters:
image: windows-2019
platform: windows
tls: openssl3
- template: ./templates/run-quicinterop.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl
- template: ./templates/run-quicinterop.yml
parameters:
image: ubuntu-latest
platform: linux
tls: openssl3
- template: ./templates/run-quicinterop.yml
parameters:
image: macOS-12
platform: macos
tls: openssl
#
# Distribution
#
- stage: distribution
displayName: Distribution
dependsOn:
- build_windows_release
- build_linux_release
- build_windows_debug
- build_linux_debug
- build_windows_nontest
- build_linux_nontest
- merge_darwin
jobs:
- template: ./templates/build-distribution.yml
- stage: test_distribution
displayName: Test Distribution
dependsOn:
- distribution
jobs:
- template: ./templates/test-distribution.yml
- stage: nuget
displayName: Nuget
dependsOn:
- build_windows_release
- build_windows_nontest
jobs:
- template: ./templates/build-nuget.yml