Skip to content

switch to group runners #282

switch to group runners

switch to group runners #282

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
checks: write
id-token: write
jobs:
build:
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
os: [windows, linux, macos]
platform: [x86_64, aarch64]
compiler: [msvc, gcc, clang]
config: [Debug, Release]
python: ["3.10"]
exclude:
# Exclude aarch64 for windows/linux
- { os: windows, platform: aarch64 }
- { os: linux, platform: aarch64 }
# Exclude x86_64 for macos
- { os: macos, platform: x86_64 }
# Exclude unavailable compilers
- { os: windows, compiler: gcc }
- { os: windows, compiler: clang }
- { os: linux, compiler: msvc }
- { os: macos, compiler: msvc }
- { os: macos, compiler: gcc }
include:
# Builds running on self-hosted runners (build + tests + coverage)
- { os: windows, compiler: msvc, config: Debug, flags: "unit-test,header-validation", runs-on: { group: nvrgfx, labels: [Windows, X64] } }
- { os: windows, compiler: msvc, config: Release, flags: "unit-test", runs-on: { group: nvrgfx, labels: [Windows, X64] } }
- { os: linux, compiler: gcc, config: Debug, flags: "unit-test,header-validation,coverage", runs-on: { group: nvrgfx, labels: [Linux, X64] } }
- { os: linux, compiler: gcc, config: Release, flags: "unit-test", runs-on: { group: nvrgfx, labels: [Linux, X64] } }
# Additional builds running on GitHub hosted runners (build only)
- { os: linux, compiler: clang, runs-on: [ubuntu-latest] }
- { os: macos, compiler: clang, runs-on: [macos-latest] }
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
# Environment variables used by ci.py
CI_OS: ${{ matrix.os }}
CI_PLATFORM: ${{ matrix.platform }}
CI_COMPILER: ${{ matrix.compiler }}
CI_CONFIG: ${{ matrix.config }}
CI_PYTHON: ${{ matrix.python }}
CI_FLAGS: ${{ matrix.flags }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
lfs: true
# Setup Linux.
- name: Setup Linux
if: startsWith(matrix.os, 'linux') && contains(matrix.runs-on, 'ubuntu-latest')
run: |
sudo apt update && sudo apt install -y libxinerama-dev libxcursor-dev xorg-dev libglu1-mesa-dev pkg-config
# Setup Python.
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
cache: 'pip'
# Setup Python environment.
- name: Setup Python environment
run: |
python -m pip install -r tools/buildrequirements.txt
python -m pip install pytest-github-actions-annotate-failures
# Setup MSVC.
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
# Setup.
- name: Setup
run: python tools/ci.py setup
# Setup vcpkg caching.
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
# Configure.
- name: Configure
run: python tools/ci.py configure
# Build.
- name: Build
run: python tools/ci.py build
# Typing Checks (Python)
- name: Typing Checks (Python)
run: python tools/ci.py typing-check-python
# Unit Tests (C++)
- name: Unit Tests (C++)
if: contains(matrix.flags, 'unit-test')
run: python tools/ci.py unit-test-cpp
# Unit Tests (Python)
- name: Unit Tests (Python)
if: contains(matrix.flags, 'unit-test')
run: python tools/ci.py unit-test-python
# Unit Test Report
- name: Unit Test Report
uses: mikepenz/action-junit-report@v4
if: contains(matrix.flags, 'unit-test')
with:
report_paths: 'reports/*-junit.xml'
check_name: "Unit Test Report"
# Generate Coverage Report
- name: Generate Coverage Report
if: contains(matrix.flags, 'coverage')
run: python tools/ci.py coverage-report
# Coverage Report
- name: Coverage Report
uses: actions/upload-artifact@v4
if: contains(matrix.flags, 'coverage')
with:
name: coverage-report
path: reports/coverage.html