Skip to content

Add detailed Configuration reference tracking #6794

Add detailed Configuration reference tracking

Add detailed Configuration reference tracking #6794

Workflow file for this run

name: Build
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: build-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
permissions: read-all
jobs:
build-windows:
name: WinUser
needs: []
strategy:
fail-fast: false
matrix:
config: ['Debug', 'Release']
plat: [windows, uwp] # TODO: Support gamecore_console
os: ['windows-2022']
arch: [x86, x64, arm64]
tls: [schannel, quictls, openssl]
static: ['', '-Static']
exclude:
# OpenSSL/quictls doesn't support arm64
- tls: quictls
arch: arm64
- plat: uwp
tls: openssl
# TODO: FIX: OpenSSL/quictls build fails with UWP
- plat: uwp
tls: quictls
# TODO: FIX: Static builds fail with UWP
- plat: uwp
static: '-Static'
uses: ./.github/workflows/build-reuse-win.yml
with:
config: ${{ matrix.config }}
plat: ${{ matrix.plat }}
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
tls: ${{ matrix.tls }}
static: ${{ matrix.static }}
repo: ${{ github.repository }}
build-windows-official:
name: WinUser-Official
needs: []
strategy:
fail-fast: false
matrix:
config: ['Debug', 'Release']
uses: ./.github/workflows/build-reuse-win.yml
with:
config: ${{ matrix.config }}
plat: 'windows'
os: 'windows-2022'
arch: 'x64'
tls: 'schannel'
official: '-ForceOfficialRelease'
repo: ${{ github.repository }}
build-windows-kernel:
name: WinKernel
needs: []
strategy:
fail-fast: false
matrix:
config: ['Debug', 'Release']
plat: [winkernel]
os: ['windows-2022']
arch: [x64, arm64]
tls: [schannel]
uses: ./.github/workflows/build-reuse-winkernel.yml
with:
config: ${{ matrix.config }}
plat: ${{ matrix.plat }}
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
tls: ${{ matrix.tls }}
repo: ${{ github.repository }}
build-ubuntu-cross-compile:
name: UbuntuArm
needs: []
strategy:
fail-fast: false
matrix:
config: ['Debug', 'Release']
plat: [linux]
os: ['ubuntu-22.04', 'ubuntu-24.04']
arch: [arm, arm64]
tls: [quictls, openssl]
static: ['', '-Static']
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 }}
repo: ${{ github.repository }}
build-ubuntu:
name: Ubuntu
needs: []
strategy:
fail-fast: false
matrix:
config: ['Debug', 'Release']
plat: [linux, android]
os: ['ubuntu-22.04', 'ubuntu-24.04']
arch: [x86, x64]
tls: [quictls, openssl]
systemcrypto: ['', '-UseSystemOpenSSLCrypto']
static: ['', '-Static']
clang: ['', '-Clang']
codecheck: ['', '-CodeCheck']
xdp: ['', '-UseXdp']
iouring: ['', '-UseIoUring']
exclude:
# Android doesn't support x86, XDP, Clang, CodeCheck or SystemCrypto
- plat: android
arch: x86
- plat: android
systemcrypto: '-UseSystemOpenSSLCrypto'
# No openssl system crypto on ubuntu-22.04
- os: 'ubuntu-22.04'
tls: 'quictls'
systemcrypto: '-UseSystemOpenSSLCrypto'
# No openssl system crypto on ubuntu-24.04
- os: 'ubuntu-24.04'
tls: 'quictls'
systemcrypto: '-UseSystemOpenSSLCrypto'
# No openssl system crypto on ubuntu-22.04
- os: 'ubuntu-22.04'
tls: 'openssl'
systemcrypto: '-UseSystemOpenSSLCrypto'
# No openssl system crypto on ubuntu-24.04
- os: 'ubuntu-24.04'
tls: 'openssl'
systemcrypto: '-UseSystemOpenSSLCrypto'
# linux xdp is for ubuntu24.04 only for now
- plat: android
xdp: "-UseXdp"
- plat: android
clang: '-Clang'
- plat: android
codecheck: '-CodeCheck'
# linux io_uring is for ubuntu24.04 only for now
- plat: android
iouring: "-UseIoUring"
# CodeCheck doesn't work with SystemCrypto, Clang, Static or Release builds
- codecheck: '-CodeCheck'
systemcrypto: '-UseSystemOpenSSLCrypto'
- codecheck: '-CodeCheck'
clang: '-Clang'
- codecheck: '-CodeCheck'
static: '-Static'
- codecheck: '-CodeCheck'
config: Release
# Static build can't dynamically link to libcrypto
- static: '-Static'
systemcrypto: '-UseSystemOpenSSLCrypto'
# No openssl system crypto on ubuntu 22.04 or 24.04
- os: 'ubuntu-22.04'
systemcrypto: '-UseSystemOpenSSLCrypto'
- os: 'ubuntu-24.04'
systemcrypto: '-UseSystemOpenSSLCrypto'
# Linux xdp is for x64 ubuntu24.04 only for now
- xdp: "-UseXdp"
os: 'ubuntu-22.04'
- xdp: "-UseXdp"
arch: x86
# Linux io_uring is for x64 ubuntu24.04 only for now
- iouring: "-UseIoUring"
os: 'ubuntu-22.04'
- iouring: "-UseIoUring"
arch: x86
# Linux io_uring is incompatible with XDP for now
- iouring: "-UseIoUring"
xdp: "-UseXdp"
uses: ./.github/workflows/build-reuse-unix.yml
with:
config: ${{ matrix.config }}
plat: ${{ matrix.plat }}
os: ${{ matrix.os }}
arch: ${{ matrix.arch }}
tls: ${{ matrix.tls }}
systemcrypto: ${{ matrix.systemcrypto }}
static: ${{ matrix.static }}
clang: ${{ matrix.clang }}
codecheck: ${{ matrix.codecheck }}
xdp: ${{ matrix.xdp }}
iouring: ${{ matrix.iouring }}
repo: ${{ github.repository }}
build-darwin:
name: MacOs
needs: []
strategy:
fail-fast: false
matrix:
config: ['Debug', 'Release']
plat: [macos, ios]
os: ['macos-13']
arch: [x64, arm64]
tls: [quictls, openssl]
static: ['', '-Static']
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 }}
repo: ${{ github.repository }}
build-nuget:
name: Build Nuget Package
needs: [build-windows]
strategy:
fail-fast: false
matrix:
vec: [
#{ plat: "uwp", tls: "quictls", arg: "-UWP" }, # TODO: Fix build first
{ plat: "windows", tls: "quictls" },
{ plat: "windows", tls: "openssl" },
{ plat: "windows", tls: "schannel" },
]
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- name: Download Build Artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
with:
name: Release-${{ matrix.vec.plat }}-windows-2022-x86-${{ matrix.vec.tls }}
path: artifacts
- name: Download Build Artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
with:
name: Release-${{ matrix.vec.plat }}-windows-2022-x64-${{ matrix.vec.tls }}
path: artifacts
- name: Download Build Artifacts
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
if: matrix.vec.tls != 'quictls' # TODO: Remove once quictls is supported
with:
name: Release-${{ matrix.vec.plat }}-windows-2022-arm64-${{ matrix.vec.tls }}
path: artifacts
- name: Build Package
shell: pwsh
run: scripts/package-nuget.ps1 -Tls ${{ matrix.vec.tls }} ${{ matrix.vec.arg }} -GHA
- name: Upload build artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
with:
name: Nuget-Release-${{ matrix.vec.plat }}-windows-2022-${{ matrix.vec.tls }}
path: artifacts/dist/*.nupkg
Complete:
name: Build Complete
if: always()
needs: [build-windows, build-windows-official, build-windows-kernel, build-ubuntu-cross-compile, build-ubuntu, build-darwin, build-nuget]
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) }}