diff --git a/ci/eval/README.md b/ci/eval/README.md index 57cde7c65fe9..2e7ae0d3876b 100644 --- a/ci/eval/README.md +++ b/ci/eval/README.md @@ -43,3 +43,6 @@ nix-build ci -A eval.full --arg baseline $BASELINE ``` Keep in mind to otherwise pass the same set of arguments for both commands (`evalSystems`, `quickTest`, `chunkSize`). +Running this command will evaluate the difference between the baseline statistics and the ones at the time of running the command. +From that difference, it will produce a human-readable report in `$out/step-summary.md`. +If no packages were added or removed, then performance statistics will also be generated as part of this report. diff --git a/ci/eval/default.nix b/ci/eval/default.nix index a379594dbc6d..c7310a5052d0 100644 --- a/ci/eval/default.nix +++ b/ci/eval/default.nix @@ -267,6 +267,15 @@ let chunkSize ? 5000, quickTest ? false, baseline, + # Which maintainer should be considered the author? + # Defaults to nixpkgs-ci which is not a maintainer and skips the check. + githubAuthorId ? "nixpkgs-ci", + # What files have been touched? Defaults to none; use the expression below to calculate it. + # ``` + # git diff --name-only --merge-base master HEAD \ + # | jq --raw-input --slurp 'split("\n")[:-1]' > touched-files.json + # ``` + touchedFilesJson ? builtins.toFile "touched-files.json" "[ ]", }: let diffs = symlinkJoin { @@ -282,10 +291,12 @@ let } ) evalSystems; }; + comparisonReport = compare { + combinedDir = combine { diffDir = diffs; }; + inherit touchedFilesJson githubAuthorId; + }; in - combine { - diffDir = diffs; - }; + comparisonReport; in {