Build #19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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.1 | |
| - os: ubuntu-24.04-arm | |
| artifact-name: Linux-aarch64 | |
| cmake-preset: linux | |
| qt-version: 6.10.1 | |
| - 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.1 | |
| - os: windows-11-arm | |
| artifact-name: Windows-MSVC-arm64 | |
| cmake-preset: windows_msvc | |
| vcvars-arch: arm64 | |
| qt-version: 6.10.1 | |
| - 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 }} |