145 lines
4.3 KiB
YAML
145 lines
4.3 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*.*.*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
name: linux-x64
|
|
archive: tar.gz
|
|
- os: windows-latest
|
|
name: windows-x64
|
|
archive: zip
|
|
- os: macos-14
|
|
name: macos-arm64
|
|
archive: zip
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Java 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: '21'
|
|
|
|
- name: Set up Qt 6
|
|
uses: jurplel/install-qt-action@v4
|
|
with:
|
|
version: '6.7.2'
|
|
modules: 'qt5compat qtimageformats qtnetworkauth'
|
|
cache: true
|
|
|
|
# ---------- Linux ----------
|
|
- name: Linux deps
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
extra-cmake-modules \
|
|
libarchive-dev \
|
|
libqrencode-dev \
|
|
libtomlplusplus-dev \
|
|
libvulkan-dev \
|
|
gamemode-dev \
|
|
zlib1g-dev \
|
|
libgl1-mesa-dev \
|
|
ninja-build \
|
|
scdoc
|
|
|
|
- name: Build cmark from source (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
git clone --depth=1 --branch 0.31.0 https://github.com/commonmark/cmark.git /tmp/cmark
|
|
cmake -B /tmp/cmark/build -S /tmp/cmark -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMARK_TESTS=OFF
|
|
sudo cmake --build /tmp/cmark/build -j --target install
|
|
|
|
# ---------- macOS ----------
|
|
- name: macOS deps
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
brew install \
|
|
extra-cmake-modules \
|
|
cmark \
|
|
libarchive \
|
|
qrencode \
|
|
tomlplusplus \
|
|
ninja
|
|
echo "PKG_CONFIG_PATH=$(brew --prefix libarchive)/lib/pkgconfig" >> $GITHUB_ENV
|
|
echo "LibArchive_ROOT=$(brew --prefix libarchive)" >> $GITHUB_ENV
|
|
|
|
# ---------- Windows ----------
|
|
- name: Windows — set up vcpkg
|
|
if: runner.os == 'Windows'
|
|
uses: lukka/run-vcpkg@v11
|
|
with:
|
|
vcpkgGitCommitId: '2d6a6cf3ac9a7cc93942c3d289a2f9c661a6f4a7'
|
|
|
|
# ---------- Configure / Build ----------
|
|
- name: Configure (Linux/macOS)
|
|
if: runner.os != 'Windows'
|
|
run: cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DLauncher_BUILD_PLATFORM=racked-portable -DBUILD_TESTING=OFF
|
|
|
|
- name: Configure (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DLauncher_BUILD_PLATFORM=racked-portable -DBUILD_TESTING=OFF -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake"
|
|
|
|
- name: Build
|
|
run: cmake --build build -j --config Release
|
|
|
|
- name: Install
|
|
run: cmake --install build --config Release
|
|
|
|
# ---------- Package ----------
|
|
- name: Package (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
mv install minecraft-launcher
|
|
tar czf minecraft-launcher-${{ matrix.name }}.tar.gz minecraft-launcher
|
|
|
|
- name: Package (Windows)
|
|
if: runner.os == 'Windows'
|
|
shell: pwsh
|
|
run: |
|
|
Move-Item install minecraft-launcher
|
|
Compress-Archive -Path minecraft-launcher -DestinationPath minecraft-launcher-${{ matrix.name }}.zip
|
|
|
|
- name: Package (macOS)
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
mv install minecraft-launcher
|
|
zip -r minecraft-launcher-${{ matrix.name }}.zip minecraft-launcher
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: minecraft-launcher-${{ matrix.name }}
|
|
path: minecraft-launcher-${{ matrix.name }}.${{ matrix.archive }}
|
|
|
|
release:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
merge-multiple: true
|
|
|
|
- name: Create Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: artifacts/*
|
|
generate_release_notes: true
|