163 lines
5 KiB
YAML
163 lines
5 KiB
YAML
name: Release Multiplatform Binaries
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: 'Release Tag (e.g. v2.2.3)'
|
|
required: false
|
|
default: 'v2.2.3-c2'
|
|
type: string
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
env:
|
|
SQLX_OFFLINE: true
|
|
SQLX_OFFLINE_DIR: packages/oneclient_db/.sqlx
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# Linux x86_64
|
|
- os: ubuntu-22.04
|
|
target: x86_64-unknown-linux-gnu
|
|
name: linux-x86_64
|
|
formats: deb,appimage
|
|
|
|
# Windows x86_64
|
|
- os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
name: windows-x86_64
|
|
formats: nsis
|
|
|
|
# macOS Apple Silicon
|
|
- os: macos-14
|
|
target: aarch64-apple-darwin
|
|
name: macos-arm64
|
|
formats: dmg,app
|
|
|
|
# macOS Intel (cross-compiled on macos-14)
|
|
- os: macos-14
|
|
target: x86_64-apple-darwin
|
|
name: macos-x86_64
|
|
formats: dmg,app
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust toolchain
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: ${{ matrix.target }}
|
|
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
key: ${{ matrix.target }}
|
|
cache-all-crates: true
|
|
|
|
- name: Install Linux build dependencies
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
libwebkit2gtk-4.1-dev \
|
|
build-essential \
|
|
curl \
|
|
wget \
|
|
file \
|
|
libxdo-dev \
|
|
libssl-dev \
|
|
libayatana-appindicator3-dev \
|
|
librsvg2-dev \
|
|
libfontconfig1-dev \
|
|
libfreetype6-dev \
|
|
libgl1-mesa-dev \
|
|
libvulkan-dev \
|
|
libasound2-dev
|
|
|
|
- name: Install cargo-packager
|
|
run: cargo install cargo-packager --locked || true
|
|
|
|
- name: Build Release Binary
|
|
run: cargo build --release --bin oneclient_app --target ${{ matrix.target }}
|
|
|
|
- name: Package Application
|
|
run: cargo packager --release --target ${{ matrix.target }} --formats ${{ matrix.formats }}
|
|
continue-on-error: true
|
|
|
|
- name: Generate RPM Package (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
cargo install cargo-generate-rpm --locked || true
|
|
cargo generate-rpm --target ${{ matrix.target }} -p oneclient_app || true
|
|
|
|
- name: Upload Build Artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: binaries-${{ matrix.name }}
|
|
if-no-files-found: warn
|
|
path: |
|
|
target/${{ matrix.target }}/release/*.deb
|
|
target/${{ matrix.target }}/release/*.AppImage
|
|
target/${{ matrix.target }}/release/*.dmg
|
|
target/${{ matrix.target }}/release/*-setup.exe
|
|
target/${{ matrix.target }}/generate-rpm/*.rpm
|
|
target/generate-rpm/*.rpm
|
|
target/release/*.deb
|
|
target/release/*.AppImage
|
|
target/release/*.dmg
|
|
target/release/*-setup.exe
|
|
|
|
create-release:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
|
|
steps:
|
|
- name: Download all artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./artifacts
|
|
merge-multiple: true
|
|
|
|
- name: Determine Release Tag
|
|
id: release_tag
|
|
run: |
|
|
if [[ "${{ github.ref_name }}" =~ ^v ]]; then
|
|
echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
|
|
elif [ -n "${{ inputs.tag }}" ]; then
|
|
echo "tag=${{ inputs.tag }}" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "tag=v2.2.3-c2" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Clean up previous release if exists
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
gh release delete "${{ steps.release_tag.outputs.tag }}" -y --cleanup-tag=false || true
|
|
|
|
- name: Publish GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: ./artifacts/**/*
|
|
tag_name: ${{ steps.release_tag.outputs.tag }}
|
|
name: "OneLauncher-Cracked ${{ steps.release_tag.outputs.tag }}"
|
|
body: |
|
|
### What's New in ${{ steps.release_tag.outputs.tag }}
|
|
- **Fixed In-Game Multiplayer Skins**: Fixed an issue where custom skins were cloned across all players in multiplayer servers. Custom skins now target only your account's specific character slot while preserving all other players' skins/models, alongside pre-configured CustomSkinLoader support for Ely.by & SkinRestorer.
|
|
draft: false
|
|
prerelease: false
|
|
generate_release_notes: false
|
|
make_latest: true
|
|
fail_on_unmatched_files: false
|