name: Build Zenyx ⚡ on: push: pull_request: jobs: build: name: Build ${{ matrix.target }} runs-on: ubuntu-latest container: ${{ matrix.container }} strategy: fail-fast: false matrix: include: - target: x86_64-unknown-linux-gnu container: messense/cargo-zigbuild:latest binary_name: zenyx-x86_64-linux ext: "" - target: aarch64-unknown-linux-gnu container: messense/cargo-zigbuild:latest binary_name: zenyx-aarch64-linux ext: "" - target: universal2-apple-darwin container: messense/cargo-zigbuild:latest binary_name: zenyx-universal-macos ext: "" - target: x86_64-pc-windows-msvc container: messense/cargo-xwin:latest binary_name: zenyx-x86_64-windows-msvc.exe ext: ".exe" steps: - name: 📥 Checkout source uses: https://github.com/actions/checkout@v4 - name: 🧩 Restore Cargo cache uses: https://github.com/actions/cache@v4 with: path: | /usr/local/cargo/registry /usr/local/cargo/git target key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-${{ matrix.target }}- - name: 🦀 Install macOS targets if: matrix.target == 'universal2-apple-darwin' uses: https://github.com/actions-rs/toolchain@v1 with: target: x86_64-apple-darwin,aarch64-apple-darwin - name: 🚀 Build project run: | cargo zigbuild --target ${{ matrix.target }} --release if: matrix.target != 'x86_64-pc-windows-msvc' - name: 🚀 Build Windows project run: | cargo xwin build --target ${{ matrix.target }} --release if: matrix.target == 'x86_64-pc-windows-msvc' - name: 📦 Package artifact run: mkdir -p artifacts && cp target/${{ matrix.target }}/release/zenyx${{ matrix.ext }} artifacts/${{ matrix.binary_name }} - name: ⬆️ Upload artifact uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: ${{ matrix.binary_name }} path: artifacts/${{ matrix.binary_name }}