forked from microsoft/msquic
-
Notifications
You must be signed in to change notification settings - Fork 0
174 lines (169 loc) · 6.05 KB
/
bvt.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
name: BVT
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: bvt-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
permissions: read-all
jobs:
bvt:
name: BVT
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04, windows-2019, windows-2022] # TODO: Add macos-12
arch: [x64]
tls: [schannel, openssl, openssl3]
systemcrypto: ['', '-UseSystemOpenSSLCrypto']
xdp: ['', '-UseXdp']
qtip: ['', '-UseQtip']
sanitize: ['', '-Sanitize']
exclude:
# Schannel only supported on windows-2022
- os: ubuntu-20.04
tls: schannel
- os: ubuntu-22.04
tls: schannel
- os: macos-12
tls: schannel
- os: windows-2019
tls: schannel
# System crypto only suppored on Ubuntu
- os: macos-12
systemcrypto: '-UseSystemOpenSSLCrypto'
- os: windows-2019
systemcrypto: '-UseSystemOpenSSLCrypto'
- os: windows-2022
systemcrypto: '-UseSystemOpenSSLCrypto'
- os: ubuntu-20.04
tls: openssl3
systemcrypto: '-UseSystemOpenSSLCrypto'
- os: ubuntu-22.04
tls: openssl
systemcrypto: '-UseSystemOpenSSLCrypto'
# Linux and Windows Schannel use ASAN
- os: ubuntu-20.04
sanitize: ''
- os: ubuntu-22.04
sanitize: ''
- tls: schannel
sanitize: ''
# OpenSSL on Windows and macOS doesn't work with ASAN
- os: macos-12
sanitize: '-Sanitize'
- os: windows-2019
tls: openssl
sanitize: '-Sanitize'
- os: windows-2019
tls: openssl3
sanitize: '-Sanitize'
- os: windows-2022
tls: openssl
sanitize: '-Sanitize'
- os: windows-2022
tls: openssl3
sanitize: '-Sanitize'
# XDP stuff is on latest Windows only
- os: ubuntu-20.04
xdp: '-UseXdp'
- os: ubuntu-22.04
xdp: '-UseXdp'
- os: macos-12
xdp: '-UseXdp'
- os: windows-2019
xdp: '-UseXdp'
# QTIP only works with XDP
- xdp: ''
qtip: '-UseQtip'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@24cb9080177205b6e8c946b17badbe402adc938f
with:
fetch-depth: 0
- name: Install Perl
if: runner.os == 'Windows'
uses: shogo82148/actions-setup-perl@795ea77474d1f81da5b0a04028a5b94d4118a9c2
with:
perl-version: '5.34'
- name: Install NASM
if: runner.os == 'Windows'
uses: ilammy/setup-nasm@321e6ed62a1fc77024a3bd853deb33645e8b22c4
- name: Prepare Machine
run: scripts/prepare-machine.ps1 -Tls ${{ matrix.tls }} -ForBuild -ForTest ${{ matrix.xdp }}
shell: pwsh
- name: Build
shell: pwsh
run: scripts/build.ps1 -Config Debug -Arch ${{ matrix.arch }} -Tls ${{ matrix.tls }} -DisableTools -DisablePerf -DynamicCRT ${{ matrix.systemcrypto }} ${{ matrix.xdp }} ${{ matrix.sanitize }}
- name: Install ETW Manifest
if: runner.os == 'Windows'
shell: pwsh
run: |
$MsQuicDll = ".\artifacts\bin\windows\${{ matrix.arch }}_Debug_${{ matrix.tls }}\msquic.dll"
$ManifestPath = ".\src\manifest\MsQuicEtw.man"
wevtutil.exe um $ManifestPath
wevtutil.exe im $ManifestPath /rf:$($MsQuicDll) /mf:$($MsQuicDll)
- name: Test
shell: pwsh
timeout-minutes: 120
run: scripts/test.ps1 -Config Debug -Arch ${{ matrix.arch }} -Tls ${{ matrix.tls }} -OsRunner ${{ matrix.os }} -GHA -LogProfile Full.Light -GenerateXmlResults ${{ matrix.xdp }} ${{ matrix.qtip }}
- name: Upload on Failure
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
if: failure()
with:
name: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.tls }}${{ matrix.systemcrypto }}${{ matrix.xdp }}${{ matrix.qtip }}${{ matrix.sanitize }}
path: artifacts
# TODO: Get this working
# bvt-kernel:
# name: BVT Kernel
# needs: []
# strategy:
# fail-fast: false
# matrix:
# os: ['windows-2022']
# arch: [x64]
# tls: [schannel]
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout repository
# uses: actions/checkout@24cb9080177205b6e8c946b17badbe402adc938f
# - name: Prepare Machine
# shell: pwsh
# run: scripts/prepare-machine.ps1 -ForBuild -ForTest -ForKernel
# - name: Add msbuild to PATH
# uses: microsoft/setup-msbuild@34cfbaee7f672c76950673338facd8a73f637506
# - name: Nuget Restore
# shell: pwsh
# run: msbuild msquic.kernel.sln -t:restore /p:RestorePackagesConfig=true /p:Configuration=Debug /p:Platform=${{ matrix.arch }}
# - name: Build Kernel
# shell: pwsh
# run: msbuild msquic.kernel.sln /p:Configuration=Debug /p:Platform=${{ matrix.arch }} /p:QUIC_VER_SUFFIX=-official
# - name: Build User
# shell: pwsh
# run: scripts/build.ps1 -Config Debug -Arch ${{ matrix.arch }} -Tls ${{ matrix.tls }} -DisableTools -DisablePerf
# - name: Install ETW Manifest
# shell: pwsh
# run: |
# $MsQuicDll = ".\artifacts\bin\windows\${{ matrix.arch }}_Debug_${{ matrix.tls }}\msquic.dll"
# $ManifestPath = ".\src\manifest\MsQuicEtw.man"
# wevtutil.exe um $ManifestPath
# wevtutil.exe im $ManifestPath /rf:$($MsQuicDll) /mf:$($MsQuicDll)
# - name: Test
# shell: pwsh
# timeout-minutes: 90
# run: scripts/test.ps1 -Config Debug -Arch ${{ matrix.arch }} -Tls ${{ matrix.tls }} -GHA -LogProfile Full.Light -GenerateXmlResults -Kernel
# - name: Upload on Failure
# uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
# if: failure()
# with:
# name: ${{ matrix.os }}-winkernel-${{ matrix.arch }}-${{ matrix.tls }}
# path: artifacts