mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
ci/check: move matrix output
This commit is contained in:
parent
f77ecb989a
commit
0f0dca464e
2 changed files with 40 additions and 37 deletions
5
.github/workflows/check.yml
vendored
5
.github/workflows/check.yml
vendored
|
@ -27,7 +27,7 @@ jobs:
|
|||
id: set-matrix
|
||||
run: |
|
||||
set -Eeu
|
||||
matrix=$(nix eval --json .#githubActions.matrix)
|
||||
matrix=$(nix eval --json .#githubActions.checksMatrix)
|
||||
echo "matrix=$matrix" >> "$GITHUB_OUTPUT"
|
||||
|
||||
build:
|
||||
|
@ -37,8 +37,7 @@ jobs:
|
|||
- prepare
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.prepare.outputs.matrix) }}
|
||||
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
|
||||
secrets: inherit
|
||||
with:
|
||||
systemAsName: true
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
};
|
||||
|
||||
# Output a build matrix for CI
|
||||
flake.githubActions.matrix =
|
||||
flake.githubActions =
|
||||
let
|
||||
systemsByPrio = [
|
||||
"x86_64-linux"
|
||||
|
@ -41,38 +41,42 @@
|
|||
) (throw "No supported system found!") systemsByPrio;
|
||||
in
|
||||
toGithubBuild system;
|
||||
|
||||
checks = lib.pipe self.checks [
|
||||
(lib.mapAttrsRecursiveCond (x: !lib.isDerivation x) (
|
||||
loc: _: {
|
||||
_type = "check";
|
||||
build = toGithubBuild (builtins.head loc);
|
||||
name = lib.attrsets.showAttrPath (builtins.tail loc);
|
||||
}
|
||||
))
|
||||
(lib.collect (lib.isType "check"))
|
||||
(lib.groupBy' (builds: x: builds ++ [ x.build ]) [ ] (x: x.name))
|
||||
(lib.mapAttrsToList (name: builds: { inherit name builds; }))
|
||||
|
||||
# Only build one one system for non-test attrs
|
||||
# TODO: this is very heavy handed, maybe we want some exceptions?
|
||||
(map (
|
||||
matrix:
|
||||
matrix
|
||||
// lib.optionalAttrs (!lib.strings.hasPrefix "test-" matrix.name) {
|
||||
builds = [
|
||||
(getPrimaryBuild matrix.builds)
|
||||
];
|
||||
}
|
||||
))
|
||||
|
||||
# Inject per-system attr
|
||||
(map (
|
||||
matrix:
|
||||
matrix
|
||||
// {
|
||||
builds = map (build: build // { attr = "checks.${build.system}.${matrix.name}"; }) matrix.builds;
|
||||
}
|
||||
))
|
||||
];
|
||||
in
|
||||
lib.pipe self.checks [
|
||||
(lib.mapAttrsRecursiveCond (x: !lib.isDerivation x) (
|
||||
loc: _: {
|
||||
_type = "check";
|
||||
build = toGithubBuild (builtins.head loc);
|
||||
name = lib.attrsets.showAttrPath (builtins.tail loc);
|
||||
}
|
||||
))
|
||||
(lib.collect (lib.isType "check"))
|
||||
(lib.groupBy' (builds: x: builds ++ [ x.build ]) [ ] (x: x.name))
|
||||
(lib.mapAttrsToList (name: builds: { inherit name builds; }))
|
||||
|
||||
# Only build one one system for non-test attrs
|
||||
# TODO: this is very heavy handed, maybe we want some exceptions?
|
||||
(map (
|
||||
matrix:
|
||||
matrix
|
||||
// lib.optionalAttrs (!lib.strings.hasPrefix "test-" matrix.name) {
|
||||
builds = [
|
||||
(getPrimaryBuild matrix.builds)
|
||||
];
|
||||
}
|
||||
))
|
||||
|
||||
# Inject per-system attr
|
||||
(map (
|
||||
matrix:
|
||||
matrix
|
||||
// {
|
||||
builds = map (build: build // { attr = "checks.${build.system}.${matrix.name}"; }) matrix.builds;
|
||||
}
|
||||
))
|
||||
];
|
||||
{
|
||||
checksMatrix.include = checks;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue