name: Build Zenyx ⚡ on: push: pull_request: jobs: setup: name: 🔧 Setup Environment runs-on: ubuntu-latest outputs: cache-hit: ${{ steps.cache-tools.outputs.cache-hit }} steps: - name: 📥 Checkout source uses: https://github.com/actions/checkout@v4 - name: 🗄️ Cache tools uses: https://github.com/actions/cache@v4 id: cache-tools with: path: | ~/.cargo/registry ~/.cargo/git target key: tools-v1-${{ hashFiles('**/Cargo.lock') }} - name: 🦀 Install Rust toolchain uses: https://github.com/actions-rs/toolchain@v1 with: toolchain: stable components: rust-src override: true build: name: 🏗️ Build ${{ matrix.target }} needs: setup runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - target: x86_64-unknown-linux-gnu image: messense/cargo-zigbuild:latest binary_name: zenyx-x86_64-linux ext: "" - target: aarch64-unknown-linux-gnu image: messense/cargo-zigbuild:latest binary_name: zenyx-aarch64-linux ext: "" - target: x86_64-pc-windows-msvc image: messense/cargo-xwin:latest binary_name: zenyx-x86_64-windows-msvc.exe ext: ".exe" container: ${{ matrix.image }} 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: cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | cargo-${{ matrix.target }}- - name: 🚀 Build release binary run: | if [[ "${{ matrix.target }}" == *"windows"* ]]; then cargo xwin build --target ${{ matrix.target }} --release else cargo zigbuild --target ${{ matrix.target }} --release fi - 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 }}