mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-06-29 09:59:59 +03:00
also switches codeql to build on Qt 6.4.3, to make sure prism still builds on the oldest version we still wanna support. for this reason, codeql also now runs tests (to see if they don't fail on 6.4.3). While doing this I also noticed our qt requirement is 6.4, as we use Qt::Literals::StringLiterals Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
233 lines
6.3 KiB
YAML
233 lines
6.3 KiB
YAML
name: Build
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "develop"
|
|
- "release-*"
|
|
paths:
|
|
# File types
|
|
- "**.cpp"
|
|
- "**.h"
|
|
- "**.java"
|
|
- "**.ui"
|
|
|
|
# Directories
|
|
- "buildconfig/**"
|
|
- "cmake/**"
|
|
- "launcher/**"
|
|
- "libraries/**"
|
|
- "program_info/**"
|
|
- "tests/**"
|
|
|
|
# Files
|
|
- "CMakeLists.txt"
|
|
- "COPYING.md"
|
|
|
|
# Workflows
|
|
- ".github/workflows/build.yml"
|
|
- ".github/actions/package/**"
|
|
- ".github/actions/setup-dependencies/**"
|
|
pull_request:
|
|
paths:
|
|
# File types
|
|
- "**.cpp"
|
|
- "**.h"
|
|
- "**.java"
|
|
- "**.ui"
|
|
|
|
# Directories
|
|
- "buildconfig/**"
|
|
- "cmake/**"
|
|
- "launcher/**"
|
|
- "libraries/**"
|
|
- "program_info/**"
|
|
- "tests/**"
|
|
|
|
# Files
|
|
- "CMakeLists.txt"
|
|
- "COPYING.md"
|
|
|
|
# Workflows
|
|
- ".github/workflows/build.yml"
|
|
- ".github/actions/package/**"
|
|
- ".github/actions/setup-dependencies/**"
|
|
workflow_call:
|
|
inputs:
|
|
build-type:
|
|
description: Type of build (Debug or Release)
|
|
type: string
|
|
default: Debug
|
|
environment:
|
|
description: Deployment environment to run under
|
|
type: string
|
|
workflow_dispatch:
|
|
inputs:
|
|
build-type:
|
|
description: Type of build (Debug or Release)
|
|
type: string
|
|
default: Debug
|
|
|
|
jobs:
|
|
build:
|
|
name: Build (${{ matrix.artifact-name }})
|
|
|
|
environment: ${{ inputs.environment || '' }}
|
|
|
|
permissions:
|
|
# Required for Azure Trusted Signing
|
|
id-token: write
|
|
# Required for vcpkg binary cache
|
|
packages: write
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04
|
|
artifact-name: Linux
|
|
cmake-preset: linux
|
|
qt-version: 6.10.2
|
|
|
|
- os: ubuntu-24.04-arm
|
|
artifact-name: Linux-aarch64
|
|
cmake-preset: linux
|
|
qt-version: 6.10.2
|
|
|
|
- os: windows-2022
|
|
artifact-name: Windows-MinGW-w64
|
|
cmake-preset: windows_mingw
|
|
msystem: CLANG64
|
|
vcvars-arch: amd64_x86
|
|
|
|
- os: windows-11-arm
|
|
artifact-name: Windows-MinGW-arm64
|
|
cmake-preset: windows_mingw
|
|
msystem: CLANGARM64
|
|
vcvars-arch: arm64
|
|
|
|
- os: windows-2022
|
|
artifact-name: Windows-MSVC
|
|
cmake-preset: windows_msvc
|
|
# TODO(@getchoo): This is the default in setup-dependencies/windows. Why isn't it working?!?!
|
|
vcvars-arch: amd64
|
|
qt-version: 6.10.2
|
|
|
|
- os: windows-11-arm
|
|
artifact-name: Windows-MSVC-arm64
|
|
cmake-preset: windows_msvc
|
|
vcvars-arch: arm64
|
|
qt-version: 6.10.2
|
|
|
|
- os: macos-26
|
|
artifact-name: macOS
|
|
cmake-preset: macos_universal
|
|
macosx-deployment-target: 12.0
|
|
qt-version: 6.9.3
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
defaults:
|
|
run:
|
|
shell: ${{ matrix.msystem != '' && 'msys2 {0}' || 'bash' }}
|
|
|
|
env:
|
|
ARTIFACT_NAME: ${{ matrix.artifact-name }}-Qt6
|
|
BUILD_PLATFORM: official
|
|
BUILD_TYPE: ${{ inputs.build-type || 'Debug' }}
|
|
CMAKE_PRESET: ${{ matrix.cmake-preset }}
|
|
|
|
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx-deployment-target }}
|
|
|
|
steps:
|
|
##
|
|
# SETUP
|
|
##
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Setup dependencies
|
|
id: setup-dependencies
|
|
uses: ./.github/actions/setup-dependencies
|
|
with:
|
|
build-type: ${{ env.BUILD_TYPE }}
|
|
artifact-name: ${{ matrix.artifact-name }}
|
|
msystem: ${{ matrix.msystem }}
|
|
vcvars-arch: ${{ matrix.vcvars-arch }}
|
|
qt-version: ${{ matrix.qt-version }}
|
|
|
|
##
|
|
# BUILD
|
|
##
|
|
|
|
- name: Configure project
|
|
run: |
|
|
cmake --preset "$CMAKE_PRESET"
|
|
|
|
- name: Run build
|
|
run: |
|
|
cmake --build --preset "$CMAKE_PRESET" --config "$BUILD_TYPE"
|
|
|
|
- name: Run tests
|
|
run: |
|
|
ctest --preset "$CMAKE_PRESET" --build-config "$BUILD_TYPE"
|
|
|
|
##
|
|
# PACKAGE
|
|
##
|
|
|
|
- name: Get short version
|
|
id: short-version
|
|
shell: bash
|
|
run: |
|
|
echo "version=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Package (Linux)
|
|
if: ${{ runner.os == 'Linux' }}
|
|
uses: ./.github/actions/package/linux
|
|
with:
|
|
version: ${{ steps.short-version.outputs.version }}
|
|
build-type: ${{ steps.setup-dependencies.outputs.build-type }}
|
|
artifact-name: ${{ matrix.artifact-name }}
|
|
qt-version: ${{ steps.setup-dependencies.outputs.qt-version }}
|
|
|
|
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
|
|
gpg-private-key-id: ${{ secrets.GPG_PRIVATE_KEY_ID }}
|
|
|
|
- name: Package (macOS)
|
|
if: ${{ runner.os == 'macOS' }}
|
|
uses: ./.github/actions/package/macos
|
|
with:
|
|
version: ${{ steps.short-version.outputs.version }}
|
|
build-type: ${{ steps.setup-dependencies.outputs.build-type }}
|
|
artifact-name: ${{ matrix.artifact-name }}
|
|
|
|
apple-codesign-cert: ${{ secrets.APPLE_CODESIGN_CERT }}
|
|
apple-codesign-password: ${{ secrets.APPLE_CODESIGN_PASSWORD }}
|
|
apple-codesign-id: ${{ secrets.APPLE_CODESIGN_ID }}
|
|
apple-notarize-apple-id: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }}
|
|
apple-notarize-team-id: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }}
|
|
apple-notarize-password: ${{ secrets.APPLE_NOTARIZE_PASSWORD }}
|
|
sparkle-ed25519-key: ${{ secrets.SPARKLE_ED25519_KEY }}
|
|
|
|
- name: Package (Windows)
|
|
if: ${{ runner.os == 'Windows' }}
|
|
uses: ./.github/actions/package/windows
|
|
env:
|
|
CI_HAS_ACCESS_TO_AZURE: ${{ vars.CI_HAS_ACCESS_TO_AZURE || '' }}
|
|
with:
|
|
version: ${{ steps.short-version.outputs.version }}
|
|
build-type: ${{ steps.setup-dependencies.outputs.build-type }}
|
|
artifact-name: ${{ matrix.artifact-name }}
|
|
msystem: ${{ matrix.msystem }}
|
|
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|