PrismLauncher/.github/workflows/build.yml
seth 3dcac0de50
ci: run workflows on local action changes
Helps ensure they still actually work when changes are made

Signed-off-by: seth <getchoo@tuta.io>
2025-05-07 18:03:37 -04:00

199 lines
5.6 KiB
YAML

name: Build
on:
push:
branches-ignore:
- "renovate/**"
paths:
# File types
- "**.cpp"
- "**.h"
- "**.java"
# 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"
# 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
workflow_dispatch:
inputs:
build-type:
description: Type of build (Debug or Release)
type: string
default: Debug
jobs:
build:
name: Build (${{ matrix.artifact-name }})
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
artifact-name: Linux
base-cmake-preset: linux
- os: windows-2022
artifact-name: Windows-MinGW-w64
base-cmake-preset: windows_mingw
msystem: CLANG64
vcvars-arch: amd64_x86
- os: windows-11-arm
artifact-name: Windows-MinGW-arm64
base-cmake-preset: windows_mingw
msystem: CLANGARM64
vcvars-arch: arm64
- os: windows-2022
artifact-name: Windows-MSVC
base-cmake-preset: windows_msvc
# TODO(@getchoo): This is the default in setup-dependencies/windows. Why isn't it working?!?!
vcvars-arch: amd64
- os: windows-2022
artifact-name: Windows-MSVC-arm64
base-cmake-preset: windows_msvc_arm64_cross
vcvars-arch: amd64_arm64
qt-architecture: win64_msvc2022_arm64_cross_compiled
- os: macos-14
artifact-name: macOS
base-cmake-preset: ${{ (inputs.build-type || 'Debug') == 'Debug' && 'macos_universal' || 'macos' }}
macosx-deployment-target: 12.0
runs-on: ${{ matrix.os }}
defaults:
run:
shell: ${{ matrix.msystem != '' && 'msys2 {0}' || 'bash' }}
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx-deployment-target }}
steps:
##
# SETUP
##
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup dependencies
id: setup-dependencies
uses: ./.github/actions/setup-dependencies
with:
build-type: ${{ inputs.build-type || 'Debug' }}
msystem: ${{ matrix.msystem }}
vcvars-arch: ${{ matrix.vcvars-arch }}
qt-architecture: ${{ matrix.qt-architecture }}
##
# BUILD
##
- name: Get CMake preset
id: cmake-preset
env:
BASE_CMAKE_PRESET: ${{ matrix.base-cmake-preset }}
PRESET_TYPE: ${{ (inputs.build-type || 'Debug') == 'Debug' && 'debug' || 'ci' }}
run: |
echo preset="$BASE_CMAKE_PRESET"_"$PRESET_TYPE" >> "$GITHUB_OUTPUT"
- name: Run CMake workflow
env:
CMAKE_PRESET: ${{ steps.cmake-preset.outputs.preset }}
run: |
cmake --workflow --preset "$CMAKE_PRESET"
##
# 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 }}
cmake-preset: ${{ steps.cmake-preset.outputs.preset }}
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
with:
version: ${{ steps.short-version.outputs.version }}
build-type: ${{ steps.setup-dependencies.outputs.build-type }}
artifact-name: ${{ matrix.artifact-name }}
msystem: ${{ matrix.msystem }}
windows-codesign-cert: ${{ secrets.WINDOWS_CODESIGN_CERT }}
windows-codesign-password: ${{ secrets.WINDOWS_CODESIGN_PASSWORD }}