diff --git a/.azure/azure-pipelines.ci.yml b/.azure/azure-pipelines.ci.yml deleted file mode 100644 index df234506eb..0000000000 --- a/.azure/azure-pipelines.ci.yml +++ /dev/null @@ -1,797 +0,0 @@ -# -# 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: - 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* - -# -# 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 - -# -# 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: - 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 - -# -# 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 - -# -# QuicInterop -# - -- stage: quicinterop - displayName: QuicInterop - dependsOn: - - build_windows_release - - build_linux_release - - build_macos_release - jobs: - - 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 diff --git a/.azure/obtemplates/build-linux.yml b/.azure/obtemplates/build-linux.yml index 1275e0058f..13220805d8 100644 --- a/.azure/obtemplates/build-linux.yml +++ b/.azure/obtemplates/build-linux.yml @@ -42,7 +42,7 @@ jobs: inputs: pwsh: true filePath: scripts/build.ps1 - arguments: -Tls ${{ parameters.tls }} -Config ${{ parameters.config }} -Platform ${{ parameters.platform }} -Arch arm64 -ToolchainFile cmake/toolchains/aarch64-linux.cmake -CI -UseSystemOpenSSLCrypto -OneBranch + arguments: -Tls ${{ parameters.tls }} -Config ${{ parameters.config }} -Platform ${{ parameters.platform }} -Arch arm64 -CI -UseSystemOpenSSLCrypto -OneBranch - task: PowerShell@2 displayName: arm ${{ if eq(parameters.tls, 'openssl') }}: @@ -52,4 +52,4 @@ jobs: inputs: pwsh: true filePath: scripts/build.ps1 - arguments: -Tls ${{ parameters.tls }} -Config ${{ parameters.config }} -Platform ${{ parameters.platform }} -Arch arm -ToolchainFile cmake/toolchains/arm-linux.cmake -CI -UseSystemOpenSSLCrypto -OneBranch + arguments: -Tls ${{ parameters.tls }} -Config ${{ parameters.config }} -Platform ${{ parameters.platform }} -Arch arm -CI -UseSystemOpenSSLCrypto -OneBranch diff --git a/.azure/templates/build-darwin-framework.yml b/.azure/templates/build-darwin-framework.yml deleted file mode 100644 index 43ff4352ed..0000000000 --- a/.azure/templates/build-darwin-framework.yml +++ /dev/null @@ -1,78 +0,0 @@ -# This template contains steps to create a darwin framework bundle - -parameters: - image: '' - -jobs: -- job: framework - displayName: Darwin Frameworks - variables: - - name: runCodesignValidationInjection - value: false - - name: skipComponentGovernanceDetection - value: true - workspace: - clean: all - pool: - vmImage: ${{ parameters.image }} - steps: - - checkout: self - - - template: ./download-artifacts.yml - parameters: - platform: macos - arch: universal - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: ios - arch: arm64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: ios - arch: x64 - tls: openssl - - - task: PowerShell@2 - displayName: macOS Framework - inputs: - pwsh: true - filePath: scripts/package-darwin-framework.ps1 - arguments: -Config Release -Platform macos -Arch universal - - - task: PowerShell@2 - displayName: iOS Framework - inputs: - pwsh: true - filePath: scripts/package-darwin-framework.ps1 - arguments: -Config Release -Platform ios -Arch arm64 - - - task: PowerShell@2 - displayName: iOS Simulator Framework - inputs: - pwsh: true - filePath: scripts/package-darwin-framework.ps1 - arguments: -Config Release -Platform ios -Arch x64 - - - task: PowerShell@2 - displayName: XCFramework - inputs: - pwsh: true - filePath: scripts/package-darwin-xcframework.ps1 - arguments: -Config Release - - - task: CopyFiles@2 - displayName: Move Frameworks - inputs: - sourceFolder: artifacts/frameworks - targetFolder: $(Build.ArtifactStagingDirectory) - - - task: PublishBuildArtifacts@1 - displayName: Upload Frameworks - inputs: - artifactName: frameworks - pathToPublish: $(Build.ArtifactStagingDirectory) - parallel: true diff --git a/.azure/templates/build-distribution.yml b/.azure/templates/build-distribution.yml deleted file mode 100644 index dc51a1cdc7..0000000000 --- a/.azure/templates/build-distribution.yml +++ /dev/null @@ -1,138 +0,0 @@ -# This template contains steps to merge all builds into a single set of files to distribute. - -jobs: -- job: distribution - displayName: Distribution - variables: - - name: runCodesignValidationInjection - value: false - - name: skipComponentGovernanceDetection - value: true - workspace: - clean: all - pool: - vmImage: ubuntu-latest - steps: - - checkout: self - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x86 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: arm - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: arm64 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: openssl3 - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x86 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x86 - tls: openssl3 - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: arm64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: arm64 - tls: openssl3 - - - template: ./download-artifacts.yml - parameters: - platform: uwp - arch: x64 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: linux - arch: x64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: linux - arch: x64 - tls: openssl3 - - - template: ./download-artifacts.yml - parameters: - platform: linux - arch: arm - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: linux - arch: arm - tls: openssl3 - - - template: ./download-artifacts.yml - parameters: - platform: macos - arch: universal - tls: openssl - - - task: PowerShell@2 - displayName: Prepare Build Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForBuild - - - task: PowerShell@2 - displayName: Package Distribution - inputs: - pwsh: true - filePath: scripts/package-distribution.ps1 - - - task: CopyFiles@2 - displayName: Move Distribution - inputs: - sourceFolder: artifacts/dist - targetFolder: $(Build.ArtifactStagingDirectory) - - - task: PublishBuildArtifacts@1 - displayName: Upload Distribution - inputs: - artifactName: distribution - pathToPublish: $(Build.ArtifactStagingDirectory) - parallel: true diff --git a/.azure/templates/build-nuget.yml b/.azure/templates/build-nuget.yml deleted file mode 100644 index 4f05d83a0d..0000000000 --- a/.azure/templates/build-nuget.yml +++ /dev/null @@ -1,141 +0,0 @@ -# This template contains steps to merge all builds into a single set of files to distribute. - -jobs: -- job: nuget - displayName: Nuget - variables: - - name: runCodesignValidationInjection - value: false - - name: skipComponentGovernanceDetection - value: true - pool: - vmImage: windows-2019 - workspace: - clean: all - steps: - - checkout: self - - - task: NuGetToolInstaller@1 - - - template: ./download-artifacts.yml - parameters: - platform: uwp - arch: x64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: uwp - arch: x86 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: uwp - arch: arm64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x86 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: arm64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x86 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: arm64 - tls: schannel - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: schannel - extraArtifactDir: _xdp - - - template: ./download-artifacts.yml - parameters: - platform: windows - arch: x64 - tls: openssl - extraArtifactDir: _xdp - - - task: PowerShell@2 - displayName: Prepare Build Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForBuild - - - task: PowerShell@2 - displayName: Package Nuget - inputs: - pwsh: true - filePath: scripts/package-nuget.ps1 - arguments: -Tls openssl -UWP - - - task: PowerShell@2 - displayName: Package Nuget - inputs: - pwsh: true - filePath: scripts/package-nuget.ps1 - arguments: -Tls openssl - - - task: PowerShell@2 - displayName: Package Nuget - inputs: - pwsh: true - filePath: scripts/package-nuget.ps1 - arguments: -Tls schannel - - - task: PowerShell@2 - displayName: Package Nuget - inputs: - pwsh: true - filePath: scripts/package-nuget.ps1 - arguments: -Tls schannel -XDP - - - task: PowerShell@2 - displayName: Package Nuget - inputs: - pwsh: true - filePath: scripts/package-nuget.ps1 - arguments: -Tls openssl -XDP - - - task: CopyFiles@2 - displayName: Move Nuget - inputs: - sourceFolder: artifacts/dist - targetFolder: $(Build.ArtifactStagingDirectory) - - - task: PublishBuildArtifacts@1 - displayName: Upload Nuget - inputs: - artifactName: nuget - pathToPublish: $(Build.ArtifactStagingDirectory) - parallel: true diff --git a/.azure/templates/merge-darwin.yml b/.azure/templates/merge-darwin.yml deleted file mode 100644 index 2bd0627f1c..0000000000 --- a/.azure/templates/merge-darwin.yml +++ /dev/null @@ -1,68 +0,0 @@ -parameters: - image: '' - -jobs: -- job: merge_darwin - displayName: Merge Darwin (macOS) - pool: - vmImage: ${{ parameters.image }} - variables: - runCodesignValidationInjection: false - steps: - - checkout: self - - - template: ./download-artifacts.yml - parameters: - platform: macos - arch: x64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: macos - arch: arm64 - tls: openssl - - - template: ./download-artifacts.yml - parameters: - platform: macos - arch: x64 - tls: openssl - extraArtifactDir: '_Static' - - - template: ./download-artifacts.yml - parameters: - platform: macos - arch: arm64 - tls: openssl - extraArtifactDir: '_Static' - - - task: PowerShell@2 - displayName: Merge (Debug) - inputs: - pwsh: true - filePath: scripts/merge-darwin.ps1 - arguments: -DeleteSource -Config Debug - - - task: PowerShell@2 - displayName: Merge (Release) - inputs: - pwsh: true - filePath: scripts/merge-darwin.ps1 - arguments: -DeleteSource -Config Release - - - task: PowerShell@2 - displayName: Merge Static (Debug) - inputs: - pwsh: true - filePath: scripts/merge-darwin.ps1 - arguments: -DeleteSource -Config Debug -ExtraArtifactDir Static - - - task: PowerShell@2 - displayName: Merge Static (Release) - inputs: - pwsh: true - filePath: scripts/merge-darwin.ps1 - arguments: -DeleteSource -Config Release -ExtraArtifactDir Static - - - template: ./upload-artifacts.yml diff --git a/.azure/templates/merge-publish-coverage.yml b/.azure/templates/merge-publish-coverage.yml deleted file mode 100644 index b3fd04af35..0000000000 --- a/.azure/templates/merge-publish-coverage.yml +++ /dev/null @@ -1,49 +0,0 @@ -# This template contains steps to run the BVTs for a single configuration. - -parameters: - image: '' - platform: '' - config: '' - arch: '' - tls: '' - -jobs: -- job: merge_cc_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }} - displayName: ${{ parameters.platform }} ${{ parameters.arch }} ${{ parameters.tls }} - dependsOn: - - bvt_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }}_false_true_MsQuic_Win_Latest - - spin_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }}_MsQuic_Win_Latest - condition: or(succeeded(), failed()) - pool: - vmImage: ${{ parameters.image }} - variables: - runCodesignValidationInjection: false - steps: - - checkout: self - - - task: PowerShell@2 - displayName: Prepare Test Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForTest -InstallCodeCoverage - - - task: DownloadBuildArtifacts@0 - displayName: Download Build Artifacts - inputs: - artifactName: coverage - itemPattern: coverage/${{ parameters.platform }}/${{ parameters.arch }}_${{ parameters.config }}_${{ parameters.tls }}/**/*.cov - downloadPath: artifacts - - - task: Powershell@2 - displayName: Merge coverage - inputs: - pwsh: true - filePath: scripts/merge-coverage.ps1 - arguments: -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: 'cobertura' - summaryFileLocation: '**/artifacts/coverage/**/msquiccoverage.xml' - pathToSources: $(System.DefaultWorkingDirectory)/ diff --git a/.azure/templates/run-bvt.yml b/.azure/templates/run-bvt.yml deleted file mode 100644 index 3b93e7958f..0000000000 --- a/.azure/templates/run-bvt.yml +++ /dev/null @@ -1,74 +0,0 @@ -# This template contains steps to run the BVTs for a single configuration. - -parameters: - pool: '' - image: '' - platform: '' - config: 'Debug' - arch: 'x64' - tls: '' - kernel: false - codeCoverage: false - logProfile: 'Basic.Light' - extraPrepareArgs: '' - extraTestArgs: '' - extraArtifactDir: '' - -jobs: -- job: bvt_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }}_${{ parameters.kernel }}_${{ parameters.codeCoverage }}_${{ replace(parameters.pool, '-', '_') }}${{ replace(replace(parameters.image, '-', '_'), '.', '_') }}${{ parameters.extraArtifactDir }} - displayName: ${{ parameters.platform }} ${{ parameters.arch }} ${{ parameters.tls }}${{ parameters.extraArtifactDir }} (${{ parameters.pool }}${{ parameters.image }}) - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - workspace: - clean: all - ${{ if eq(parameters.pool, '') }}: - pool: - vmImage: ${{ parameters.image }} - variables: - runCodesignValidationInjection: false - timeoutInMinutes: 120 - steps: - - checkout: self - - - template: ./download-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} - includeKernel: ${{ parameters.kernel }} - extraArtifactDir: ${{ parameters.extraArtifactDir }} - - - task: UseDotNet@2 - displayName: Use .NET 6.0 - condition: eq('${{ parameters.platform }}', 'linux') - inputs: - packageType: 'sdk' - version: '6.0.x' - - - task: PowerShell@2 - displayName: Prepare Test Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForTest ${{ parameters.extraPrepareArgs }} - - - task: PowerShell@2 - displayName: Run BVTs - timeoutInMinutes: 90 - ${{ if eq(parameters.codeCoverage, true) }}: - continueOnError: true - inputs: - pwsh: true - filePath: scripts/test.ps1 - ${{ if eq(parameters.codeCoverage, true) }}: - arguments: -NoProgress -IsolationMode Batch -CodeCoverage -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} ${{ parameters.extraTestArgs }} - ${{ if eq(parameters.codeCoverage, false) }}: - arguments: -AZP -NoProgress -LogProfile ${{ parameters.logProfile }} -GenerateXmlResults -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} ${{ parameters.extraTestArgs }} - - - template: ./upload-test-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - config: ${{ parameters.config }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} - codeCoverage: ${{ parameters.codeCoverage }} diff --git a/.azure/templates/run-dotnet.yml b/.azure/templates/run-dotnet.yml deleted file mode 100644 index 37e024e7e0..0000000000 --- a/.azure/templates/run-dotnet.yml +++ /dev/null @@ -1,49 +0,0 @@ -# This template contains steps to run the language interop tests for a single configuration. - -parameters: - image: '' - platform: '' - config: 'Debug' - arch: 'x64' - tls: '' - extraArtifactDir: '' - -jobs: -- job: dotnet_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }}${{ parameters.extraArtifactDir }} - displayName: ${{ parameters.platform }} ${{ parameters.arch }} ${{ parameters.tls }}${{ parameters.extraArtifactDir }} - - pool: - vmImage: ${{ parameters.image }} - variables: - runCodesignValidationInjection: false - steps: - - checkout: self - - - template: ./download-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} - includeKernel: ${{ parameters.kernel }} - extraArtifactDir: ${{ parameters.extraArtifactDir }} - - - task: UseDotNet@2 - displayName: Use .NET 6.0 - inputs: - packageType: 'sdk' - version: '6.0.x' - - - task: PowerShell@2 - displayName: Prepare Test Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForTest - - - task: PowerShell@2 - displayName: Run Lang Interop - timeoutInMinutes: 5 - inputs: - pwsh: true - filePath: scripts/DotNetTest.ps1 - arguments: -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} ${{ parameters.extraArgs }} diff --git a/.azure/templates/run-quicinterop.yml b/.azure/templates/run-quicinterop.yml deleted file mode 100644 index 0fe85a1772..0000000000 --- a/.azure/templates/run-quicinterop.yml +++ /dev/null @@ -1,59 +0,0 @@ -# This template contains steps to run quicinterop for a single configuration. - -parameters: - pool: '' - image: '' - platform: '' - config: 'Release' - arch: 'x64' - tls: '' - -jobs: -- job: interop_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }} - displayName: ${{ parameters.platform }} ${{ parameters.arch }} ${{ parameters.tls }} - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - workspace: - clean: all - ${{ if eq(parameters.pool, '') }}: - pool: - vmImage: ${{ parameters.image }} - variables: - runCodesignValidationInjection: false - steps: - - checkout: self - - - task: UseDotNet@2 - displayName: Use .NET 6.0 - condition: eq('${{ parameters.platform }}', 'linux') - inputs: - packageType: 'sdk' - version: '6.0.x' - - - template: ./download-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} - - - task: PowerShell@2 - displayName: Prepare Test Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForTest - - - task: PowerShell@2 - displayName: Run QuicInterop - timeoutInMinutes: 5 - inputs: - pwsh: true - filePath: scripts/interop.ps1 - arguments: -AZP -GenerateXmlResults -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} - - - template: ./upload-test-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - config: ${{ parameters.config }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} diff --git a/.azure/templates/run-spinquic.yml b/.azure/templates/run-spinquic.yml deleted file mode 100644 index 329a7572ca..0000000000 --- a/.azure/templates/run-spinquic.yml +++ /dev/null @@ -1,71 +0,0 @@ -# This template contains steps to run spinquic for a single configuration. - -parameters: - pool: '' - image: '' - platform: '' - config: 'Debug' - arch: 'x64' - tls: '' - allocFail: 0 - timeout: 600000 - repeat: 20 - codeCoverage: false - extraPrepareArgs: '' - extraTestArgs: '' - extraArtifactDir: '' - -jobs: -- job: spin_${{ parameters.platform }}_${{ parameters.arch }}_${{ parameters.tls }}_${{ replace(parameters.pool, '-', '_') }}${{ replace(replace(parameters.image, '-', '_'), '.', '_') }}${{ parameters.extraArtifactDir }} - displayName: ${{ parameters.platform }} ${{ parameters.arch }} ${{ parameters.tls }}${{ parameters.extraArtifactDir }} (${{ parameters.pool }}${{ parameters.image }}) - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - workspace: - clean: all - ${{ if eq(parameters.pool, '') }}: - pool: - vmImage: ${{ parameters.image }} - variables: - runCodesignValidationInjection: false - steps: - - checkout: self - - - task: UseDotNet@2 - displayName: Use .NET 6.0 - condition: eq('${{ parameters.platform }}', 'linux') - inputs: - packageType: 'sdk' - version: '6.0.x' - - - template: ./download-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} - extraArtifactDir: ${{ parameters.extraArtifactDir }} - - - task: PowerShell@2 - displayName: Prepare Test Machine - inputs: - pwsh: true - filePath: scripts/prepare-machine.ps1 - arguments: -ForTest ${{ parameters.extraPrepareArgs }} - - - task: PowerShell@2 - displayName: Run SpinQuic - timeoutInMinutes: 12 - inputs: - pwsh: true - filePath: scripts/spin.ps1 - ${{ if eq(parameters.codeCoverage, true) }}: - arguments: -GenerateXmlResults -Timeout ${{ parameters.timeout }} -RepeatCount ${{ parameters.repeat }} -AllocFail ${{ parameters.allocFail }} -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} -CodeCoverage -LogProfile Basic.Light ${{ parameters.extraTestArgs }} - ${{ if eq(parameters.codeCoverage, false) }}: - arguments: -AZP -GenerateXmlResults -Timeout ${{ parameters.timeout }} -RepeatCount ${{ parameters.repeat }} -AllocFail ${{ parameters.allocFail }} -Config ${{ parameters.config }} -Arch ${{ parameters.arch }} -Tls ${{ parameters.tls }} ${{ parameters.extraTestArgs }} - - - template: ./upload-test-artifacts.yml - parameters: - platform: ${{ parameters.platform }} - config: ${{ parameters.config }} - arch: ${{ parameters.arch }} - tls: ${{ parameters.tls }} - codeCoverage: ${{ parameters.codeCoverage }} diff --git a/.azure/templates/test-distribution.yml b/.azure/templates/test-distribution.yml deleted file mode 100644 index fa6f81892b..0000000000 --- a/.azure/templates/test-distribution.yml +++ /dev/null @@ -1,32 +0,0 @@ -jobs: -- job: test_distribution - displayName: Test Distribution - variables: - - name: runCodesignValidationInjection - value: false - - name: skipComponentGovernanceDetection - value: true - pool: - vmImage: ubuntu-latest - - steps: - - task: DownloadBuildArtifacts@0 - displayName: Download Test - inputs: - artifactName: artifacts - itemPattern: artifacts/bin/linux/x64_Release_openssl/msquictest - downloadPath: $(Build.SourcesDirectory) - - task: DownloadBuildArtifacts@0 - displayName: Download Package - inputs: - artifactName: distribution - itemPattern: distribution/*.deb - downloadPath: $(Build.SourcesDirectory) - - pwsh: | - sudo apt-add-repository ppa:lttng/stable-2.13 - sudo apt-get update - sudo apt-get install -y lttng-tools - sudo dpkg -i $(Build.SourcesDirectory)/distribution/libmsquic_2.3.0_amd64.deb - - pwsh: | - chmod +x $(Build.SourcesDirectory)/artifacts/bin/linux/x64_Release_openssl/msquictest - $(Build.SourcesDirectory)/artifacts/bin/linux/x64_Release_openssl/msquictest --gtest_filter=ParameterValidation.ValidateApi diff --git a/.github/workflows/build-darwin-framework.yml b/.github/workflows/build-darwin-framework.yml new file mode 100644 index 0000000000..186ed64055 --- /dev/null +++ b/.github/workflows/build-darwin-framework.yml @@ -0,0 +1,27 @@ +name: Build Darwin Framework + +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: darwin-frameworks-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +permissions: read-all + +jobs: + build-all-frameworks: + name: Build All Darwin Frameworks (Release) + uses: ./.github/workflows/build-reuse-darwin-framework.yml + with: + config: 'Release' diff --git a/.github/workflows/build-reuse-darwin-framework.yml b/.github/workflows/build-reuse-darwin-framework.yml new file mode 100644 index 0000000000..0f4cd17e42 --- /dev/null +++ b/.github/workflows/build-reuse-darwin-framework.yml @@ -0,0 +1,134 @@ +name: Build Darwin Universal + +on: + workflow_dispatch: + workflow_call: + inputs: + config: + required: false + default: 'Release' + type: string + # options: + # - Debug + # - Release + tls: + required: false + default: 'openssl' + type: string + # options: + # - openssl + # - openssl3 + static: + required: false + default: '' + type: string + +jobs: + build-darwin: + name: Build Darwin Binaries + needs: [] + strategy: + fail-fast: false + matrix: + plat: [macos, ios] + arch: [x64, arm64] + uses: ./.github/workflows/build-reuse-unix.yml + with: + config: ${{ inputs.config }} + plat: ${{ matrix.plat }} + os: macos-12 + arch: ${{ matrix.arch }} + tls: ${{ inputs.tls }} + static: ${{ inputs.static }} + + build-darwin-universal: + name: Build Universal Binaries + needs: [build-darwin] + runs-on: macos-12 + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + with: + fetch-depth: 0 + - name: Download Build Artifacts (x64) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: ${{ inputs.config }}-macos-macos-12-x64-${{ inputs.tls }}${{ inputs.static }} + path: artifacts + - name: Download Build Artifacts (arm64) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: ${{ inputs.config }}-macos-macos-12-arm64-${{ inputs.tls }}${{ inputs.static }} + path: artifacts + - name: Build Package + shell: pwsh + run: scripts/merge-darwin.ps1 -DeleteSource -Config ${{ inputs.config }} + - name: Upload build artifacts + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + with: + name: ${{ inputs.config }}-macos-macos-12-universal-${{ inputs.tls }}${{ inputs.static }} + path: artifacts + + build-darwin-framework: + name: Build Darwin Framework + needs: [build-darwin-universal] + strategy: + fail-fast: false + matrix: + vec: [ + { plat: "ios", arch: "x64" }, # iOS Simulator + { plat: "ios", arch: "arm64" }, + { plat: "macos", arch: "universal" }, + ] + runs-on: macos-12 + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + with: + fetch-depth: 0 + - name: Download Build Artifacts (x64) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: ${{ inputs.config }}-${{ matrix.vec.plat }}-macos-12-${{ matrix.vec.arch }}-${{ inputs.tls }}${{ inputs.static }} + path: artifacts + - name: Build Framework + shell: pwsh + run: scripts/package-darwin-framework.ps1 -Config ${{ inputs.config }} -Platform ${{ matrix.vec.plat }} -Arch ${{ matrix.vec.arch }} + - name: Upload build artifacts + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + with: + name: Framework-${{ inputs.config }}-${{ matrix.vec.plat }}-macos-12-${{ matrix.vec.arch }}-${{ inputs.tls }}${{ inputs.static }} + path: artifacts + + build-darwin-xcframework: + name: Build Darwin XCFramework + needs: [build-darwin-framework] + runs-on: macos-12 + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + with: + fetch-depth: 0 + - name: Download Build Artifacts (iOS x64) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: Framework-${{ inputs.config }}-ios-macos-12-x64-openssl + path: artifacts + - name: Download Build Artifacts (iOS arm64) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: Framework-${{ inputs.config }}-ios-macos-12-arm64-openssl + path: artifacts + - name: Download Build Artifacts (MacOS Universal) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: Framework-${{ inputs.config }}-macos-macos-12-universal-openssl + path: artifacts + - name: Build XCFramework + shell: pwsh + run: scripts/package-darwin-xcframework.ps1 -Config ${{ inputs.config }} + - name: Upload build artifacts + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + with: + name: XCFramework-${{ inputs.config }} + path: artifacts/frameworks diff --git a/.github/workflows/build-reuse-unix.yml b/.github/workflows/build-reuse-unix.yml index 44c8bccde6..db19ab09c3 100644 --- a/.github/workflows/build-reuse-unix.yml +++ b/.github/workflows/build-reuse-unix.yml @@ -37,9 +37,11 @@ on: # options: # - x86 # - x64 + # - arm + # - arm64 tls: required: false - default: 'schannel' + default: 'openssl' type: string # options: # - openssl @@ -75,24 +77,36 @@ jobs: build-unix-reuse: name: Build runs-on: ${{ inputs.os }} + container: + image: ${{ inputs.plat == 'linux' && contains(inputs.arch, 'arm') && format('ghcr.io/microsoft/msquic/linux-build-xcomp:{0}', inputs.os) || '' }} steps: - name: Checkout repository uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 with: fetch-depth: 0 + - name: Set ownership + if: inputs.plat == 'linux' && contains(inputs.arch, 'arm') + run: | + # this is to fix GIT not liking owner of the checkout dir + chown -R $(id -u):$(id -g) $PWD - name: Prepare Machine + if: contains(inputs.arch, 'arm') != true shell: pwsh run: scripts/prepare-machine.ps1 -ForBuild -Tls ${{ inputs.tls }} + - name: Prepare Machine + if: contains(inputs.arch, 'arm') == true + shell: pwsh + run: scripts/prepare-machine.ps1 -ForOneBranch -InitSubmodules -Tls ${{ inputs.tls }} - name: Build For Test if: inputs.test == '-Test' shell: pwsh - run: scripts/build.ps1 -Config ${{ inputs.config }} -Platform ${{ inputs.plat }} -Arch ${{ inputs.arch }} -Tls ${{ inputs.tls }} -DisablePerf ${{ inputs.static }} ${{ inputs.clang }} ${{ inputs.systemcrypto }} ${{ inputs.codecheck }} ${{ inputs.sanitize }} + run: scripts/build.ps1 -Config ${{ inputs.config }} -Platform ${{ inputs.plat }} -Arch ${{ inputs.arch }} -Tls ${{ inputs.tls }} -DisablePerf ${{ inputs.static }} ${{ inputs.clang }} ${{ inputs.systemcrypto }} ${{ inputs.codecheck }} ${{ inputs.sanitize }} -OneBranch - name: Build if: inputs.test == '' shell: pwsh - run: scripts/build.ps1 -Config ${{ inputs.config }} -Platform ${{ inputs.plat }} -Arch ${{ inputs.arch }} -Tls ${{ inputs.tls }} ${{ inputs.static }} ${{ inputs.clang }} ${{ inputs.codecheck }} + run: scripts/build.ps1 -Config ${{ inputs.config }} -Platform ${{ inputs.plat }} -Arch ${{ inputs.arch }} -Tls ${{ inputs.tls }} ${{ inputs.static }} ${{ inputs.clang }} ${{ inputs.systemcrypto }} ${{ inputs.codecheck }} ${{ inputs.sanitize }} -OneBranch - name: Upload build artifacts uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce with: name: ${{ inputs.config }}-${{ inputs.plat }}-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.tls }}${{ inputs.static }}${{ inputs.clang }}${{ inputs.systemcrypto }}${{ inputs.codecheck }}${{ inputs.sanitize }}${{ inputs.test }} - path: artifacts \ No newline at end of file + path: artifacts diff --git a/.github/workflows/build-reuse-win.yml b/.github/workflows/build-reuse-win.yml index dba63d68bc..3ca67c54b8 100644 --- a/.github/workflows/build-reuse-win.yml +++ b/.github/workflows/build-reuse-win.yml @@ -67,7 +67,7 @@ jobs: build-windows-reuse: if: inputs.plat == 'windows' || inputs.plat == 'uwp' name: Build - runs-on: windows-2019 # workaround windows-2022 compiler issue for sanitizer + runs-on: ${{ inputs.sanitize == '-Sanitize' && 'windows-2019' || inputs.os }} # use windows-2019 for ASAN steps: - name: Checkout repository uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1c1a86ef11..2794346a4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -84,22 +84,18 @@ jobs: arch: ${{ matrix.arch }} tls: ${{ matrix.tls }} - build-macOS: - name: MacOs + build-ubuntu-cross-compile: + name: UbuntuArm needs: [] strategy: fail-fast: false matrix: config: ['Debug', 'Release'] - plat: [macos, ios] - os: ['macos-12'] - arch: [x86, x64, arm64] + plat: [linux] + os: ['ubuntu-20.04', 'ubuntu-22.04'] + arch: [arm, arm64] tls: [openssl, openssl3] static: ['', '-Static'] - exclude: - # iOS doesn't support x86 - - plat: ios - arch: x86 uses: ./.github/workflows/build-reuse-unix.yml with: config: ${{ matrix.config }} @@ -132,12 +128,12 @@ jobs: - plat: android systemcrypto: '-UseSystemOpenSSLCrypto' # No openssl3 system crypto on ubuntu-20.04 - - plat: linux ' + - plat: linux os: 'ubuntu-20.04' tls: 'openssl3' systemcrypto: '-UseSystemOpenSSLCrypto' # No openssl system crypto on ubuntu-22.04 - - plat: linux ' + - plat: linux os: 'ubuntu-22.04' tls: 'openssl' systemcrypto: '-UseSystemOpenSSLCrypto' @@ -159,6 +155,9 @@ jobs: # Release builds fail with CodeCheck - config: 'Release' codecheck: '-CodeCheck' + # Static build can't dynamically link to libcrypto + - systemcrypto: '-UseSystemOpenSSLCrypto' + static: '-Static' uses: ./.github/workflows/build-reuse-unix.yml with: config: ${{ matrix.config }} @@ -171,42 +170,69 @@ jobs: clang: ${{ matrix.clang }} codecheck: ${{ matrix.codecheck }} - build-ubuntu-cross-compile: - name: UbuntuArm + build-darwin: + name: MacOs needs: [] strategy: fail-fast: false matrix: - plat: [linux] - os: ['ubuntu-20.04', 'ubuntu-22.04'] - arch: [arm, arm64] + config: ['Debug', 'Release'] + plat: [macos, ios] + os: ['macos-12'] + arch: [x64, arm64] tls: [openssl, openssl3] - toolchain: ['cmake/toolchains/arm-linux.cmake', 'cmake/toolchains/aarch64-linux.cmake'] static: ['', '-Static'] - exclude: - - arch: arm - toolchain: 'cmake/toolchains/aarch64-linux.cmake' - - arch: arm64 - toolchain: 'cmake/toolchains/arm-linux.cmake' - runs-on: ${{ matrix.os }} - container: - image: ghcr.io/microsoft/msquic/linux-build-xcomp + uses: ./.github/workflows/build-reuse-unix.yml + with: + config: ${{ matrix.config }} + plat: ${{ matrix.plat }} + os: ${{ matrix.os }} + arch: ${{ matrix.arch }} + tls: ${{ matrix.tls }} + static: ${{ matrix.static }} + + build-nuget: + name: Build Nuget Package + needs: [build-windows] + strategy: + fail-fast: false + matrix: + vec: [ + { plat: "uwp", tls: "openssl", arg: "-UWP" }, + { plat: "windows", tls: "openssl" }, + { plat: "windows", tls: "schannel" }, + { plat: "windows", tls: "openssl", xdp: "-UseXdp", arg: "-XDP" }, + { plat: "windows", tls: "schannel", xdp: "-UseXdp", arg: "-XDP" }, + ] + runs-on: windows-2022 steps: - name: Checkout repository uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 with: fetch-depth: 0 - submodules: 'recursive' - - name: Set ownership - run: | - # this is to fix GIT not liking owner of the checkout dir - chown -R $(id -u):$(id -g) $PWD - - name: Prepare Machine - shell: pwsh - run: scripts/prepare-machine.ps1 -ForOneBranch -InitSubmodules - - name: Build Debug - shell: pwsh - run: scripts/build.ps1 -Config Debug -Arch ${{ matrix.arch }} -ToolchainFile ${{ matrix.toolchain }} -Tls ${{ matrix.tls }} -DisableLogs -OneBranch ${{ matrix.static }} - - name: Build Release + - name: Download Build Artifacts + uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 + with: + name: Release-${{ matrix.vec.plat }}-windows-2022-x86-${{ matrix.vec.tls }}${{ matrix.vec.xdp }} + path: artifacts + if_no_artifact_found: ignore + - name: Download Build Artifacts + uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 + with: + name: Release-${{ matrix.vec.plat }}-windows-2022-x64-${{ matrix.vec.tls }}${{ matrix.vec.xdp }} + path: artifacts + if_no_artifact_found: ignore + - name: Download Build Artifacts + uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 + with: + name: Release-${{ matrix.vec.plat }}-windows-2022-arm64-${{ matrix.vec.tls }}${{ matrix.vec.xdp }} + path: artifacts + if_no_artifact_found: ignore + - name: Build Package shell: pwsh - run: scripts/build.ps1 -Config Release -Arch ${{ matrix.arch }} -ToolchainFile ${{ matrix.toolchain }} -Tls ${{ matrix.tls }} -DisableLogs -OneBranch ${{ matrix.static }} + run: scripts/package-nuget.ps1 -Tls ${{ matrix.vec.tls }} ${{ matrix.vec.arg }} -GHA + - name: Upload build artifacts + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + with: + name: Nuget-Release-${{ matrix.vec.plat }}-windows-2022-arm64-${{ matrix.vec.tls }}${{ matrix.vec.xdp }} + path: artifacts/dist/*.nupkg diff --git a/.github/workflows/dotnet-test.yml b/.github/workflows/dotnet-test.yml new file mode 100644 index 0000000000..96a0046f9d --- /dev/null +++ b/.github/workflows/dotnet-test.yml @@ -0,0 +1,97 @@ +name: DotNet Language Interop Tests + +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: dotnet-test-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +permissions: read-all + +jobs: + build-darwin-frameworks: + name: Build All Darwin Frameworks + uses: ./.github/workflows/build-reuse-darwin-framework.yml + with: + config: 'Debug' + + build-linux: + name: Ubuntu + needs: [] + strategy: + fail-fast: false + matrix: + vec: [ + { plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl" }, + { plat: "linux", os: "ubuntu-22.04", arch: "x64", tls: "openssl3" }, + ] + uses: ./.github/workflows/build-reuse-unix.yml + with: + config: 'Debug' + plat: ${{ matrix.vec.plat }} + os: ${{ matrix.vec.os }} + arch: ${{ matrix.vec.arch }} + tls: ${{ matrix.vec.tls }} + + build-windows: + name: Windows + needs: [] + strategy: + fail-fast: false + matrix: + vec: [ + { plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl" }, + { plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3" }, + ] + uses: ./.github/workflows/build-reuse-win.yml + with: + config: 'Debug' + plat: ${{ matrix.vec.plat }} + os: ${{ matrix.vec.os }} + arch: ${{ matrix.vec.arch }} + tls: ${{ matrix.vec.tls }} + + dotnet-test: + name: DotNet Test + needs: [build-windows, build-linux, build-darwin-frameworks] + strategy: + fail-fast: false + matrix: + vec: [ + { plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl" }, + { plat: "windows", os: "windows-2022", arch: "x64", tls: "openssl3" }, + { plat: "linux", os: "ubuntu-20.04", arch: "x64", tls: "openssl" }, + { plat: "linux", os: "ubuntu-22.04", arch: "x64", tls: "openssl3" }, + { plat: "macos", os: "macos-12", arch: "universal", tls: "openssl" }, + ] + runs-on: ${{ matrix.vec.os }} + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + with: + fetch-depth: 0 + - name: Prepare Machine + shell: pwsh + run: scripts/prepare-machine.ps1 -ForTest + - name: Download Build Artifacts + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: Debug-${{ matrix.vec.plat }}-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }} + path: artifacts + - uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 + with: + dotnet-version: 6.0.x + - name: Run Lang Interop + shell: pwsh + run: scripts/DotNetTest.ps1 -Config Debug -Arch ${{ matrix.vec.arch }} -Tls ${{ matrix.vec.tls }} diff --git a/.github/workflows/package-linux.yml b/.github/workflows/package-linux.yml new file mode 100644 index 0000000000..993398935f --- /dev/null +++ b/.github/workflows/package-linux.yml @@ -0,0 +1,82 @@ +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-20.04", arch: "arm", tls: "openssl" }, + { config: "Release", os: "ubuntu-20.04", arch: "arm64", tls: "openssl" }, + { config: "Release", os: "ubuntu-20.04", arch: "x64", tls: "openssl" }, + { config: "Release", os: "ubuntu-22.04", arch: "arm", tls: "openssl3" }, + { config: "Release", os: "ubuntu-22.04", arch: "arm64", tls: "openssl3" }, + { config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "openssl3" }, + ] + uses: ./.github/workflows/package-reuse-linux.yml + with: + config: ${{ matrix.vec.config }} + os: ${{ matrix.vec.os }} + arch: ${{ matrix.vec.arch }} + tls: ${{ matrix.vec.tls }} + + test-packages: + name: Test Linux Packages + needs: [build-packages] + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + vec: [ + { config: "Release", os: "ubuntu-20.04", arch: "x64", tls: "openssl" }, + { config: "Release", os: "ubuntu-22.04", arch: "x64", tls: "openssl3" }, + ] + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + with: + fetch-depth: 0 + - name: Prepare Machine + shell: pwsh + run: scripts/prepare-machine.ps1 -ForTest + - name: Download Package + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: ${{ matrix.vec.config }}-linux-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-UseSystemOpenSSLCrypto + path: artifacts + - name: Download Build Artifacts + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: Package-${{ matrix.vec.config }}-linux-${{ matrix.vec.os }}-${{ matrix.vec.arch }}-${{ matrix.vec.tls }}-UseSystemOpenSSLCrypto + 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 dpkg -i {} \; + - 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 diff --git a/.github/workflows/package-reuse-linux.yml b/.github/workflows/package-reuse-linux.yml new file mode 100644 index 0000000000..b35d9d667b --- /dev/null +++ b/.github/workflows/package-reuse-linux.yml @@ -0,0 +1,95 @@ +name: Package Linux + +# The caller is responsible for making sure all options passed to this workflow are valid and compatible with each other. + +on: + workflow_dispatch: + workflow_call: + inputs: + config: + required: false + default: 'Release' + type: string + # options: + # - Debug + # - Release + os: + required: false + type: string + default: 'ubuntu-20.04' + # options: + # - ubuntu-20.04 + # - ubuntu-22.04 + arch: + required: false + default: 'x64' + type: string + # options: + # - x86 + # - x64 + tls: + required: false + default: 'openssl' + type: string + # options: + # - openssl + # - openssl3 + static: + required: false + default: '' + type: string + clang: + required: false + default: '' + type: string + test: + required: false + default: '' + type: string + +permissions: read-all + +jobs: + build-unix-reuse: + needs: [] + uses: ./.github/workflows/build-reuse-unix.yml + with: + config: ${{ inputs.config }} + os: ${{ inputs.os }} + arch: ${{ inputs.arch }} + tls: ${{ inputs.tls }} + static: ${{ inputs.static }} + systemcrypto: '-UseSystemOpenSSLCrypto' # packages must use libcrypto on system + clang: ${{ inputs.clang }} + test: ${{ inputs.test }} + + package: + name: Package + needs: [build-unix-reuse] + runs-on: ubuntu-22.04 + steps: + - name: Checkout repository + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + with: + fetch-depth: 0 + - name: Prepare Machine + shell: pwsh + run: scripts/prepare-machine.ps1 -ForBuild + - name: Download Build Artifacts + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + with: + name: ${{ inputs.config }}-linux-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.tls }}-UseSystemOpenSSLCrypto${{ inputs.sanitize }}${{ inputs.test }} + path: artifacts + - name: Extract binaries # they are tar'd to preserve permissions and symlinks. + run: | + cd artifacts/bin/linux + rm -rf */ + find -name "*.tar" -exec tar -xvf '{}' \; + - name: Build Package + shell: pwsh + run: scripts/package-distribution.ps1 + - name: Upload build artifacts + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + with: + name: Package-${{ inputs.config }}-linux-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.tls }}-UseSystemOpenSSLCrypto${{ inputs.sanitize }}${{ inputs.test }} + path: artifacts/dist diff --git a/scripts/build.ps1 b/scripts/build.ps1 index f2fbc282b9..ee50b49643 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -18,9 +18,6 @@ This script provides helpers for building msquic. .PARAMETER Tls The TLS library to use. -.PARAMETER ToolchainFile - Toolchain file to use (if cross). - .PARAMETER DisableLogs Disables log collection. @@ -136,9 +133,6 @@ param ( [ValidateSet("schannel", "openssl", "openssl3")] [string]$Tls = "", - [Parameter(Mandatory = $false)] - [string]$ToolchainFile = "", - [Parameter(Mandatory = $false)] [switch]$DisableLogs = $false, @@ -343,6 +337,7 @@ function CMake-Execute([String]$Arguments) { # Uses cmake to generate the build configuration files. function CMake-Generate { $Arguments = "" + $SkipCIBuildCheck = $false if ($Generator.Contains(" ")) { $Generator = """$Generator""" @@ -452,8 +447,17 @@ function CMake-Generate { if ($Platform -eq "gamecore_console") { $Arguments += " -DCMAKE_SYSTEM_VERSION=10.0 -DQUIC_GAMECORE_BUILD=on" } - if ($ToolchainFile -ne "") { - $Arguments += " -DCMAKE_TOOLCHAIN_FILE=""$ToolchainFile""" + if ($IsLinux) { + switch ($Arch) { + "arm" { + $Arguments += " -DCMAKE_TOOLCHAIN_FILE=""cmake/toolchains/arm-linux.cmake""" + $SkipCIBuildCheck = $true + } + "arm64" { + $Arguments += " -DCMAKE_TOOLCHAIN_FILE=""cmake/toolchains/aarch64-linux.cmake""" + $SkipCIBuildCheck = $true + } + } } if ($SkipPdbAltPath) { $Arguments += " -DQUIC_PDBALTPATH=OFF" @@ -463,7 +467,7 @@ function CMake-Generate { } if ($CI) { $Arguments += " -DQUIC_CI=ON" - if ($Platform -eq "android" -or $ToolchainFile -ne "") { + if ($Platform -eq "android" -or $SkipCIBuildCheck) { $Arguments += " -DQUIC_SKIP_CI_CHECKS=ON" } $Arguments += " -DQUIC_VER_BUILD_ID=$env:BUILD_BUILDID" diff --git a/scripts/package-nuget.ps1 b/scripts/package-nuget.ps1 index 6ad019fa7b..3bec913772 100644 --- a/scripts/package-nuget.ps1 +++ b/scripts/package-nuget.ps1 @@ -26,7 +26,10 @@ param ( [switch]$XDP = $false, [Parameter(Mandatory = $false)] - [switch]$ReleaseBuild = $false + [switch]$ReleaseBuild = $false, + + [Parameter(Mandatory = $false)] + [switch]$GHA = $false ) Set-StrictMode -Version 'Latest' @@ -97,7 +100,7 @@ $NativeDir = Join-Path $PackagingDir "build/native" foreach ($Arch in $Architectures) { $BuildPath = Join-Path $PlatformDir "$($Arch)_$($Config)_$($Tls)" - if ($XDP) { + if ($XDP -and !$GHA) { $BuildPath += "_xdp" } $LibPath = Join-Path $NativeDir "lib/$Arch"