difftreelog
ci post results as a comment
in: master
2 files changed
flake.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, ... }:
{
nix/post-comment.nixdiffbeforeafterbothno changes