CI: Switch Windows build to CMake and MinGW. #495
Workflow file for this run
This file contains 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 targets | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
windows-build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- target: x64 | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Fetch upstream tags for version metadata | |
run: | | |
git remote add upstream https://github.com/QW-Group/ezquake-source.git | |
git fetch --tags --no-recurse-submodules upstream | |
if: github.repository != 'QW-Group/ezquake-source' | |
- name: Install dependencies | |
run: | | |
sudo apt-get update -qq | |
sudo apt-get install -qq --no-install-recommends cmake ninja-build binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 | |
- name: Setup vcpkg | |
uses: lukka/run-vcpkg@v11 | |
- name: Run CMake | |
uses: lukka/run-cmake@v10 | |
with: | |
configurePreset: mingw64-${{ matrix.target }}-cross | |
buildPreset: mingw64-${{ matrix.target }}-cross-release | |
- name: Archive client | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-multi-${{ matrix.target }} | |
path: ezquake.exe | |
macos-build: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
ARCH: ["arm64","x64"] | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Fetch upstream tags for version metadata | |
run: | | |
git remote add upstream https://github.com/QW-Group/ezquake-source.git | |
git fetch --tags --no-recurse-submodules upstream | |
if: github.repository != 'QW-Group/ezquake-source' | |
- name: Install macOS build dependencies | |
run: brew install -q autoconf automake libtool | |
- uses: lukka/get-cmake@latest | |
- name: Setup vcpkg | |
uses: lukka/run-vcpkg@v11 | |
- name: Run CMake | |
uses: lukka/run-cmake@v10 | |
with: | |
configurePreset: macos-${{matrix.ARCH}}-release-ci | |
buildPreset: macos-${{matrix.ARCH}}-release-ci | |
- name: Pre-zip to preserve executable bit | |
run: | | |
zip -r -9 ${GITHUB_WORKSPACE}/ezQuake.zip ezQuake.app | |
working-directory: build-macos-${{matrix.ARCH}}-release-ci/Release | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ezQuake-macos-${{matrix.ARCH}} | |
path: ezQuake.zip | |
macos-universal: | |
needs: macos-build | |
runs-on: macos-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Download Intel Build | |
uses: actions/download-artifact@v4 | |
with: | |
name: ezQuake-macos-arm64 | |
path: artifacts/arm64 | |
- name: Download ARM64 Build | |
uses: actions/download-artifact@v4 | |
with: | |
name: ezQuake-macos-x64 | |
path: artifacts/x64 | |
- name: Create Universal Binary | |
run: | | |
(cd artifacts/x64 && unzip -qq ezQuake.zip) && (cd artifacts/arm64 && unzip -qq ezQuake.zip) | |
cp -r artifacts/arm64/ezQuake.app . | |
lipo -create -output ezQuake.app/Contents/MacOS/ezQuake \ | |
artifacts/x64/ezQuake.app/Contents/MacOS/ezQuake \ | |
artifacts/arm64/ezQuake.app/Contents/MacOS/ezQuake | |
codesign --force --sign - --entitlements misc/install/ezquake.entitlements.plist --options runtime --timestamp ezQuake.app | |
zip -r ezQuake.zip ezQuake.app | |
- name: Delete macOS arch specific builds | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: | | |
ezQuake-macos-arm64 | |
ezQuake-macos-x64 | |
- name: Upload Build Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ezQuake-macOS | |
path: ezQuake.zip | |
compression-level: 9 | |
appimage-build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [linux-x86_64] | |
include: | |
- target: linux-x86_64 | |
platform: x86_64 | |
container: | |
image: debian:testing | |
options: --privileged | |
steps: | |
- name: Install dependencies | |
run: apt-get -qy update && apt-get -qy install curl file libfuse2 git make sudo git | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Fetch upstream tags for version metadata | |
run: | | |
git config --global --add safe.directory '*' # container build workaround | |
git remote add upstream https://github.com/QW-Group/ezquake-source.git | |
git fetch --tags --no-recurse-submodules upstream | |
if: github.repository != 'QW-Group/ezquake-source' | |
- name: Build | |
run: git config --global --add safe.directory $PWD && ./misc/appimage/appimage-manual_creation.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.target }}-AppImage | |
path: ezQuake-${{ matrix.platform }}.AppImage |