zenyx-engine/.forgejo/workflows/rust.yml

111 lines
No EOL
3.8 KiB
YAML

name: Build Zenyx ⚡
on:
push:
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build ${{ matrix.target }}
strategy:
fail-fast: false
matrix:
target:
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
- x86_64-pc-windows-gnu
- x86_64-apple-darwin
- aarch64-apple-darwin
include:
# Linux targets
- target: x86_64-unknown-linux-gnu
binary_name: zenyx-x86_64-linux
source_binary: zenyx
deps: libwayland-dev wayland-protocols
linker_env_var: ""
linker_env_value: ""
cargo_command: build
- target: aarch64-unknown-linux-gnu
binary_name: zenyx-aarch64-linux
source_binary: zenyx
deps: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu qemu-user libwayland-dev wayland-protocols
linker_env_var: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER
linker_env_value: aarch64-linux-gnu-gcc
cargo_command: build
# Windows target
- target: x86_64-pc-windows-gnu
binary_name: zenyx-x86_64-windows.exe
source_binary: zenyx.exe
deps: mingw-w64
linker_env_var: CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER
linker_env_value: x86_64-w64-mingw32-gcc
cargo_command: build
# macOS targets
- target: x86_64-apple-darwin
binary_name: zenyx-x86_64-macos
source_binary: zenyx
deps:
linker_env_var: CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER
linker_env_value: zig
cargo_command: zigbuild
- target: aarch64-apple-darwin
binary_name: zenyx-aarch64-macos
source_binary: zenyx
deps:
linker_env_var: CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER
linker_env_value: zig
cargo_command: zigbuild
runs-on: ubuntu-latest
steps:
- name: 📥 Clone repository
uses: actions/checkout@v4
- name: 🐧 Install Linux dependencies
if: contains(matrix.target, 'linux')
run: |
apt-get update
apt-get install -y ${{ matrix.deps }}
- name: 🪟 Install Windows dependencies
if: contains(matrix.target, 'windows')
run: |
apt-get update
apt-get install -y ${{ matrix.deps }}
- name: 🍎 Install macOS dependencies (Zig)
if: contains(matrix.target, 'apple-darwin')
run: |
wget https://ziglang.org/builds/zig-linux-x86_64-0.11.0.tar.xz
tar xf zig-linux-x86_64-0.11.0.tar.xz
echo "$(pwd)/zig-linux-x86_64-0.11.0" >> $GITHUB_PATH
- name: 🔧 Install Rust
uses: https://github.com/actions-rs/toolchain@v1
with:
toolchain: stable
override: true
target: ${{ matrix.target }}
profile: minimal
- name: 🔧 Install cargo-zigbuild
if: contains(matrix.target, 'apple-darwin')
run: cargo install cargo-zigbuild
- name: 🏗️ Build
run: cargo ${{ matrix.cargo_command }} --release --target ${{ matrix.target }}
env:
${{ matrix.linker_env_var }}: ${{ matrix.linker_env_value }}
CARGO_TERM_COLOR: always
- name: 📦 Prepare binary
run: |
mkdir -p artifacts
cp target/${{ matrix.target }}/release/${{ matrix.source_binary }} artifacts/${{ matrix.binary_name }}
chmod +x artifacts/${{ matrix.binary_name }}
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: ${{ matrix.binary_name }}
path: artifacts/${{ matrix.binary_name }}
compression-level: 9