TiagoMSSantos/MobileRT

View on GitHub
.github/workflows/native.yml

Summary

Maintainability
Test Coverage
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