diff --git a/.forgejo/workflows/build-release-nix.yml b/.forgejo/workflows/build-release-nix.yml new file mode 100644 index 0000000..aa59de6 --- /dev/null +++ b/.forgejo/workflows/build-release-nix.yml @@ -0,0 +1,80 @@ +name: Build Zenyx โšก + +on: + push: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + cargo-test: + name: ๐Ÿงช Run Cargo Tests + runs-on: nixos-latest + steps: + - name: ๐Ÿ“ฅ Checkout source + uses: https://github.com/actions/checkout@v4 + + - name: ๐Ÿš€ Setup & Run tests + run: | + nix-shell --run " + git-lfs fetch + git-lfs pull + cargo test --release --all + " + + build: + name: ๐Ÿ—๏ธ Build ${{ matrix.target }} + needs: [cargo-test] + runs-on: nixos-latest + strategy: + fail-fast: false + matrix: + target: + - x86_64-unknown-linux-gnu + - aarch64-unknown-linux-gnu + - x86_64-pc-windows-msvc + - aarch64-pc-windows-msvc + include: + - target: x86_64-unknown-linux-gnu + binary_name: zenyx-x86_64-linux + ext: "" + command: zigbuild + args: --target x86_64-unknown-linux-gnu --release + - target: aarch64-unknown-linux-gnu + binary_name: zenyx-aarch64-linux + ext: "" + command: zigbuild + args: --target aarch64-unknown-linux-gnu --release + - target: x86_64-pc-windows-msvc + binary_name: zenyx-x86_64-windows + ext: ".exe" + command: xwin build + args: --target x86_64-pc-windows-msvc --release + - target: aarch64-pc-windows-msvc + binary_name: zenyx-aarch64-windows + ext: ".exe" + command: xwin build + args: --target aarch64-pc-windows-msvc --release + + steps: + - name: ๐Ÿ“ฅ Checkout source + uses: https://github.com/actions/checkout@v4 + + - name: ๐Ÿš€ Install Target & Build release binary + run: | + nix-shell --run " + git-lfs fetch --all + git-lfs pull + cargo ${{ matrix.command }} ${{ matrix.args }} + " + + - name: ๐Ÿ“ฆ Package artifact + run: | + mkdir -p artifacts + cp target/${{ matrix.target }}/release/zenyx${{ matrix.ext }} artifacts/${{ matrix.binary_name }}${{ matrix.ext }} + + - name: โฌ†๏ธ Upload artifact + uses: https://code.forgejo.org/forgejo/upload-artifact@v4 + with: + name: ${{ matrix.binary_name }}${{ matrix.ext }} + path: artifacts/${{ matrix.binary_name }}${{ matrix.ext }} + if-no-files-found: error \ No newline at end of file diff --git a/flake.nix b/flake.nix index 21466a2..4b74c91 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,9 @@ cargo-cross cargo-xwin cargo-wizard + git + git-lfs + zig_0_12 wine64 pkg-config ]; @@ -73,7 +76,15 @@ nativeBuildInputs = with pkgs; [ (rust-bin.stable.latest.default.override { extensions = ["rust-src" "cargo" "rustfmt" "clippy"]; - targets = [ "x86_64-pc-windows-msvc" "x86_64-unknown-linux-gnu" ]; + targets = [ + "x86_64-pc-windows-msvc" + "x86_64-unknown-linux-gnu" + "x86_64-apple-darwin" + "aarch64-unknown-linux-gnu" + "aarch64-pc-windows-msvc" + "aarch64-apple-darwin" + # "universal2-apple-darwin" + ]; }) pkg-config