From eb1376a47e29d2d7b3d556add2002e518077939d Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sun, 8 Mar 2026 21:37:23 +0100 Subject: [PATCH] ci(build): add Windows build, store release binaries --- .github/workflows/action.yml | 24 ++++++++++++++++++++++++ flake.nix | 31 ++++++++++++++++++++++++++++++- nix/package.nix | 2 +- 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index c6d42bc..5a20cc8 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -57,3 +57,27 @@ jobs: env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + + - name: Build Linux release binary + run: nix build --no-pure-eval --accept-flake-config + + - name: Package Linux binary + run: zip jj-cz-linux-x86_64.zip result/bin/jj-cz LICENSE.GPL.md LICENSE.MIT.md + + - name: Upload Linux artifact + uses: actions/upload-artifact@v3 + with: + name: jj-cz-linux-x86_64 + path: jj-cz-linux-x86_64.zip + + - name: Build Windows release binary + run: nix build .#windows --no-pure-eval --accept-flake-config + + - name: Package Windows binary + run: zip jj-cz-windows-x86_64.zip result/bin/jj-cz.exe LICENSE.GPL.md LICENSE.MIT.md + + - name: Upload Windows artifact + uses: actions/upload-artifact@v3 + with: + name: jj-cz-windows-x86_64 + path: jj-cz-windows-x86_64.zip diff --git a/flake.nix b/flake.nix index 72cdc3d..af9a33b 100644 --- a/flake.nix +++ b/flake.nix @@ -41,7 +41,36 @@ }; in { formatter = alejandra.defaultPackage.${system}; - packages = import ./nix/package.nix {inherit pkgs rustPlatform;}; + packages = + (import ./nix/package.nix {inherit pkgs rustPlatform;}) + // { + windows = let + mingwPkgs = pkgs.pkgsCross.mingwW64; + rustWindows = pkgs.rust-bin.stable.latest.default.override { + targets = ["x86_64-pc-windows-gnu"]; + }; + rustPlatformWindows = mingwPkgs.makeRustPlatform { + cargo = rustWindows; + rustc = rustWindows; + }; + cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); + in + rustPlatformWindows.buildRustPackage { + pname = cargoToml.package.name; + version = cargoToml.package.version; + src = pkgs.lib.cleanSource ./.; + cargoLock.lockFile = ./Cargo.lock; + nativeBuildInputs = [pkgs.upx]; + doCheck = false; + meta = { + description = "Conventional commits for Jujutsu"; + homepage = "https://labs.phundrak.com/phundrak/jj-cz"; + }; + postBuild = '' + ${pkgs.upx}/bin/upx target/*/release/jj-cz.exe + ''; + }; + }; devShell = import ./nix/shell.nix { inherit inputs pkgs rustVersion; }; diff --git a/nix/package.nix b/nix/package.nix index 7b0a480..f058040 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -11,7 +11,7 @@ inherit version; src = pkgs.lib.cleanSource ../.; cargoLock.lockFile = ../Cargo.lock; - buildInputs = [ pkgs.upx ]; + nativeBuildInputs = [ pkgs.upx ]; useNextest = true; meta = { description = "Conventional commits for Jujutsu";