diff --git a/.forgejo/workflows/build-release.yml b/.forgejo/workflows/build-release.yml index a87f305..101d8ec 100644 --- a/.forgejo/workflows/build-release.yml +++ b/.forgejo/workflows/build-release.yml @@ -1,91 +1,78 @@ -name: Build Zenyx ⚡ + name: Build Zenyx ⚡ -on: - push: - pull_request: + 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 + jobs: + build: + name: Build ${{ matrix.target }} + runs-on: ubuntu-latest + container: ${{ matrix.container }} - - 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') }} + strategy: + fail-fast: false + matrix: + include: + - target: x86_64-unknown-linux-gnu + container: messense/cargo-zigbuild:latest + binary_name: zenyx-x86_64-linux + ext: "" - - name: 🦀 Install Rust toolchain - uses: https://github.com/actions-rs/toolchain@v1 - with: - toolchain: stable - components: rust-src - override: true + - target: aarch64-unknown-linux-gnu + container: messense/cargo-zigbuild:latest + binary_name: zenyx-aarch64-linux + ext: "" - 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: universal2-apple-darwin + container: messense/cargo-zigbuild:latest + binary_name: zenyx-universal-macos + ext: "" - - target: aarch64-unknown-linux-gnu - image: messense/cargo-zigbuild:latest - binary_name: zenyx-aarch64-linux - ext: "" + - target: x86_64-pc-windows-msvc + container: messense/cargo-xwin:latest + binary_name: zenyx-x86_64-windows-msvc.exe + ext: ".exe" - - target: x86_64-pc-windows-msvc - image: messense/cargo-xwin:latest - binary_name: zenyx-x86_64-windows-msvc.exe - ext: ".exe" + steps: + - name: Ensure nodejs + run: | + apt-get -y install nodejs + - name: 📥 Checkout source + uses: https://github.com/actions/checkout@v4 - container: ${{ matrix.image }} + - 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 }}- - steps: - - name: 📥 Checkout source - uses: https://github.com/actions/checkout@v4 + - 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: 🗄️ 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 + - name: 🚀 Build project + run: | cargo zigbuild --target ${{ matrix.target }} --release - fi + 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: 🚀 Build Windows project + run: | + cargo xwin build --target ${{ matrix.target }} --release + if: matrix.target == 'x86_64-pc-windows-msvc' - - name: ⬆️ Upload artifact - uses: https://code.forgejo.org/forgejo/upload-artifact@v4 - with: - name: ${{ matrix.binary_name }} - path: artifacts/${{ matrix.binary_name }} \ No newline at end of file + - 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 }} \ No newline at end of file