.github/workflows/native.yml
name: Native (Qt)
on:
workflow_dispatch:
push:
paths-ignore:
- '*'
- '**/**'
- '!.github/workflows/native.yml'
- '!.github/workflows/reusable-native.yml'
- '!scripts/helper_functions.sh'
- '!scripts/install_dependencies.sh'
- '!scripts/profile.sh'
- '!scripts/compile_native.sh'
- '!scripts/test/utils/utils.sh'
- '!codecov.yml'
- '!app/third_party/conan/Native/**'
- '!**/CMakeLists*'
- '!**/AndroidTest/resources/**'
- '!**/*.c*'
- '!**/*.h'
- '!**/*.hpp'
- '!**/*.ui*'
defaults:
run:
shell: sh
working-directory: .
concurrency:
group: ${{ github.workflow }} ${{ github.ref }}
cancel-in-progress: true
# Default environment variables.
env:
GITHUB_STEP_TIMEOUT_SMALL: 4
GITHUB_STEP_TIMEOUT_MEDIUM: 10
GITHUB_STEP_TIMEOUT_LONG: 20
jobs:
Native:
name: Native ${{ matrix.type }} ${{ matrix.compiler }} (${{ matrix.host_os }})
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
strategy:
fail-fast: true
matrix:
include:
# Ubuntu
- name: G++
host_os: ubuntu-20.04
type: debug
compiler: g++
- name: Clang++
host_os: ubuntu-22.04
type: release
compiler: clang++
- name: Intel C++
host_os: ubuntu-24.04
type: release
compiler: icpx
# MacOS
- name: G++
host_os: macos-15
type: release
compiler: g++
- name: Clang++
host_os: macos-14
type: release
compiler: clang++
- name: G++
host_os: macos-13
type: release
compiler: g++
# Windows
- name: MSVC
host_os: windows-2025
type: release
compiler: cl
qt_host: 'windows'
qt_version: '6.9.0'
qt_arch: 'win64_msvc2022_64'
- name: MSVC
host_os: windows-2022
type: release
compiler: cl
qt_host: 'windows'
qt_version: '5.15.2'
qt_arch: 'win64_msvc2019_64'
- name: MinGW
host_os: windows-2019
type: release
compiler: g++
qt_host: 'windows'
qt_version: '5.12.0'
qt_arch: 'win64_mingw73'
uses: ./.github/workflows/reusable-native.yml
with:
name: ${{ matrix.name }}
host_os: ${{ matrix.host_os }}
type: ${{ matrix.type }}
compiler: ${{ matrix.compiler }}
qt_host: ${{ matrix.qt_host }}
qt_version: ${{ matrix.qt_version }}
qt_arch: ${{ matrix.qt_arch }}
# If you might want to use a secret in the build or test job then you would need to pass secrets, inherit disables secret isolation
secrets: inherit