diff --git a/.forgejo/workflows/build-release.yml b/.forgejo/workflows/build-release.yml index 0a0cbcd..e3d7f9e 100644 --- a/.forgejo/workflows/build-release.yml +++ b/.forgejo/workflows/build-release.yml @@ -5,29 +5,49 @@ on: pull_request: jobs: - build: - name: Build ${{ matrix.target }} + 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 - services: - docker: - image: docker:dind - options: >- - --privileged - --env DOCKER_TLS_CERTDIR="" - ports: - - 2375:2375 + - name: 🗄️ Cache tools + uses: https://github.com/actions/cache@v4 + id: cache-tools + with: + path: | + ~/.cargo/bin + /tmp/zig + 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 + + - name: 📦 Install Zig and cargo-zigbuild + if: steps.cache-tools.outputs.cache-hit != 'true' + run: | + mkdir -p /tmp/zig + curl -L https://ziglang.org/builds/zig-linux-x86_64-0.11.0.tar.xz | tar -xJ -C /tmp/zig --strip-components=1 + curl -L https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash + cargo binstall -y cargo-zigbuild + + build: + name: 🏗️ Build ${{ matrix.target }} + needs: setup + runs-on: ubuntu-latest strategy: fail-fast: false matrix: target: - x86_64-unknown-linux-gnu - aarch64-unknown-linux-gnu - - powerpc64le-unknown-linux-gnu - - s390x-unknown-linux-gnu - - riscv64gc-unknown-linux-gnu - - x86_64-pc-windows-gnu - x86_64-pc-windows-msvc include: - target: x86_64-unknown-linux-gnu @@ -36,18 +56,6 @@ jobs: - target: aarch64-unknown-linux-gnu binary_name: zenyx-aarch64-linux ext: "" - - target: powerpc64le-unknown-linux-gnu - binary_name: zenyx-powerpc64le-linux - ext: "" - - target: s390x-unknown-linux-gnu - binary_name: zenyx-s390x-linux - ext: "" - - target: riscv64gc-unknown-linux-gnu - binary_name: zenyx-riscv64-linux - ext: "" - - target: x86_64-pc-windows-gnu - binary_name: zenyx-x86_64-windows-gnu.exe - ext: ".exe" - target: x86_64-pc-windows-msvc binary_name: zenyx-x86_64-windows-msvc.exe ext: ".exe" @@ -56,33 +64,37 @@ jobs: - name: 📥 Checkout source uses: https://github.com/actions/checkout@v4 - - name: 🛠️ Install Rust toolchain + - name: 🗄️ Restore tool cache + uses: https://github.com/actions/cache@v4 + with: + path: | + ~/.cargo/bin + /tmp/zig + key: tools-v1-${{ hashFiles('**/Cargo.lock') }} + + - name: 📍 Add Zig to PATH + run: echo "/tmp/zig" >> $GITHUB_PATH + + - name: 🎯 Install Rust target uses: https://github.com/actions-rs/toolchain@v1 with: toolchain: stable target: ${{ matrix.target }} override: true - components: rust-src - - name: 🧩 Restore Cargo cache + - name: 🗄️ Restore Cargo cache uses: https://github.com/actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target - key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} + key: cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-cargo-${{ matrix.target }}- + cargo-${{ matrix.target }}- - - name: 🧰 Install Cross - run: cargo install cross --locked - - - name: 🚀 Build with cross - env: - DOCKER_HOST: tcp://localhost:2375 - CROSS_CONTAINER_IN_CONTAINER: true - run: cross build --target ${{ matrix.target }} --release + - name: 🚀 Build release binary + run: cargo zigbuild --target ${{ matrix.target }} --release - name: 📦 Package artifact run: | @@ -93,4 +105,4 @@ jobs: uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: ${{ matrix.binary_name }} - path: artifacts/${{ matrix.binary_name }} + path: artifacts/${{ matrix.binary_name }} \ No newline at end of file