git.delta.rocks / jrsonnet / refs/commits / e468723051e7

difftreelog

ci post results as a comment

lysuzqzyYaroslav Bolyukin2026-05-07parent: #b842704.patch.diff
in: master

2 files changed

modifiedflake.nixdiffbeforeafterboth
--- a/flake.nix
+++ b/flake.nix
@@ -39,12 +39,104 @@
         mkForce
         optionals
         optionalAttrs
+        concatMapStringsSep
         ;
+      rel = system: inputs.self.legacyPackages.${system}.release;
+      releaseSections = [
+        {
+          name = "Linux (glibc)";
+          artifacts = [
+            {
+              label = "jrsonnet-x86_64-linux-glibc";
+              drv = (rel "x86_64-linux").jrsonnet-linux-glibc;
+            }
+            {
+              label = "jrsonnet-experimental-x86_64-linux-glibc";
+              drv = (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;
+            }
+            {
+              label = "jrsonnet-aarch64-linux-glibc";
+              drv = (rel "aarch64-linux").jrsonnet-linux-glibc;
+            }
+            {
+              label = "jrsonnet-experimental-aarch64-linux-glibc";
+              drv = (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;
+            }
+            {
+              label = "jrsonnet-i686-linux-glibc";
+              drv = (rel "i686-linux").jrsonnet-linux-glibc;
+            }
+            {
+              label = "jrsonnet-experimental-i686-linux-glibc";
+              drv = (rel "i686-linux").jrsonnet-experimental-linux-glibc;
+            }
+            {
+              label = "jrsonnet-armv7l-linux-glibc";
+              drv = (rel "armv7l-linux").jrsonnet-linux-glibc;
+            }
+            {
+              label = "jrsonnet-experimental-armv7l-linux-glibc";
+              drv = (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;
+            }
+          ];
+        }
+        {
+          name = "Linux (musl)";
+          artifacts = [
+            {
+              label = "jrsonnet-x86_64-linux-musl";
+              drv = (rel "x86_64-linux").jrsonnet-linux-musl;
+            }
+            {
+              label = "jrsonnet-experimental-x86_64-linux-musl";
+              drv = (rel "x86_64-linux").jrsonnet-experimental-linux-musl;
+            }
+            {
+              label = "jrsonnet-aarch64-linux-musl";
+              drv = (rel "aarch64-linux").jrsonnet-linux-musl;
+            }
+            {
+              label = "jrsonnet-experimental-aarch64-linux-musl";
+              drv = (rel "aarch64-linux").jrsonnet-experimental-linux-musl;
+            }
+          ];
+        }
+        {
+          name = "macOS";
+          artifacts = [
+            {
+              label = "jrsonnet-aarch64-darwin";
+              drv = (rel "aarch64-linux").jrsonnet-darwin;
+            }
+            {
+              label = "jrsonnet-experimental-aarch64-darwin";
+              drv = (rel "aarch64-linux").jrsonnet-experimental-darwin;
+            }
+          ];
+        }
+        {
+          name = "Windows";
+          artifacts = [
+            {
+              label = "jrsonnet-x86_64-windows";
+              drv = (rel "x86_64-linux").jrsonnet-windows;
+              windows = true;
+            }
+            {
+              label = "jrsonnet-experimental-x86_64-windows";
+              drv = (rel "x86_64-linux").jrsonnet-experimental-windows;
+              windows = true;
+            }
+          ];
+        }
+      ];
+      releaseArtifacts = builtins.concatMap (s: s.artifacts) releaseSections;
     in
     inputs.flake-parts.lib.mkFlake { inherit inputs; } {
       imports = [
         inputs.shelly.flakeModule
         inputs.hercules-ci-effects.flakeModule
+        ./nix/post-comment.nix
       ];
       systems = [
         "x86_64-linux"
@@ -310,80 +402,10 @@
               ]);
           };
         };
-      hercules-ci.github-releases.files =
-        let
-          rel = system: inputs.self.legacyPackages.${system}.release;
-          bin = drv: "${drv}/bin/jrsonnet";
-          exe = drv: "${drv}/bin/jrsonnet.exe";
-        in
-        [
-          {
-            label = "jrsonnet-x86_64-linux-musl";
-            path = bin (rel "x86_64-linux").jrsonnet-linux-musl;
-          }
-          {
-            label = "jrsonnet-experimental-x86_64-linux-musl";
-            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;
-          }
-          {
-            label = "jrsonnet-aarch64-darwin";
-            path = bin (rel "aarch64-linux").jrsonnet-darwin;
-          }
-          {
-            label = "jrsonnet-experimental-aarch64-darwin";
-            path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;
-          }
-          {
-            label = "jrsonnet-x86_64-windows.exe";
-            path = exe (rel "x86_64-linux").jrsonnet-windows;
-          }
-          {
-            label = "jrsonnet-experimental-x86_64-windows.exe";
-            path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;
-          }
-
-          {
-            label = "jrsonnet-aarch64-linux-musl";
-            path = bin (rel "aarch64-linux").jrsonnet-linux-musl;
-          }
-          {
-            label = "jrsonnet-experimental-aarch64-linux-musl";
-            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;
-          }
-
-          {
-            label = "jrsonnet-x86_64-linux-glibc";
-            path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;
-          }
-          {
-            label = "jrsonnet-experimental-x86_64-linux-glibc";
-            path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;
-          }
-          {
-            label = "jrsonnet-aarch64-linux-glibc";
-            path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;
-          }
-          {
-            label = "jrsonnet-experimental-aarch64-linux-glibc";
-            path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;
-          }
-          {
-            label = "jrsonnet-i686-linux-glibc";
-            path = bin (rel "i686-linux").jrsonnet-linux-glibc;
-          }
-          {
-            label = "jrsonnet-experimental-i686-linux-glibc";
-            path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;
-          }
-          {
-            label = "jrsonnet-armv7l-linux-glibc";
-            path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;
-          }
-          {
-            label = "jrsonnet-experimental-armv7l-linux-glibc";
-            path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;
-          }
-        ];
+      hercules-ci.github-releases.files = map (a: {
+        label = a.label + (if a.windows or false then ".exe" else "");
+        path = "${a.drv}/bin/jrsonnet${if a.windows or false then ".exe" else ""}";
+      }) releaseArtifacts;
       hercules-ci.cargo-publish = {
         enable = true;
         secretName = "crates-io";
@@ -398,6 +420,30 @@
           dayOfWeek = [ "Sat" ];
         };
       };
+      hercules-ci.post-comment = {
+        enable = true;
+        caches = [ "jrsonnet.cachix.org" ];
+        script =
+          let
+            benchmarks = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;
+            renderSection = s: ''
+              echo
+              echo "### ${s.name}"
+              echo
+              ${concatMapStringsSep "\n" (a: ''echo "- [${a.label}]($(nixTar ${a.drv}))"'') s.artifacts}
+            '';
+          in
+          ''
+            {
+              echo "## Benchmark results"
+              echo
+              echo "[View rendered]($(nixRender ${benchmarks}))"
+              echo
+              echo "## Downloads"
+              ${concatMapStringsSep "\n" renderSection releaseSections}
+            } > $out
+          '';
+      };
       herculesCI =
         { lib, config, ... }:
         {
addednix/post-comment.nixdiffbeforeafterboth

no changes