kubenix/release.nix

86 lines
2 KiB
Nix
Raw Normal View History

let
fetch = import ./lib/compat.nix;
in
{ pkgs ? import (fetch "nixpkgs") { }
, nixosPath ? toString (fetch "nixpkgs") + "/nixos"
, lib ? pkgs.lib
, e2e ? true
, throwError ? true
}:
2019-03-08 00:39:09 +01:00
with lib;
let
2019-02-12 16:22:18 +01:00
kubenix = import ./. { inherit pkgs; };
lib = kubenix.lib;
generateK8S = name: spec: import ./generators/k8s {
inherit name;
inherit pkgs;
inherit (pkgs) lib;
2019-02-13 17:04:13 +01:00
inherit spec;
};
generateIstio = import ./generators/istio {
inherit pkgs;
inherit (pkgs) lib;
};
2019-03-08 00:39:09 +01:00
2019-05-05 12:13:09 +02:00
runK8STests = k8sVersion: import ./tests {
inherit pkgs lib kubenix k8sVersion e2e throwError nixosPath;
};
in
rec {
generate.k8s = pkgs.linkFarm "k8s-generated.nix" [
{
2021-04-28 21:15:58 -05:00
name = "v1.19.nix";
path = generateK8S "v1.19" (builtins.fetchurl {
url = "https://github.com/kubernetes/kubernetes/raw/v1.19.10/api/openapi-spec/swagger.json";
sha256 = "sha256-ZXxonUAUxRK6rhTgK62ytTdDKCuOoWPwxJmktiKgcJc=";
});
}
{
2021-04-28 21:15:58 -05:00
name = "v1.20.nix";
path = generateK8S "v1.20" (builtins.fetchurl {
url = "https://github.com/kubernetes/kubernetes/raw/v1.20.6/api/openapi-spec/swagger.json";
sha256 = "sha256-xzVOarQDSomHMimpt8H6MfpiQrLl9am2fDvk/GfLkDw=";
});
}
{
2021-04-28 21:15:58 -05:00
name = "v1.21.nix";
path = generateK8S "v1.21" (builtins.fetchurl {
url = "https://github.com/kubernetes/kubernetes/raw/v1.21.0/api/openapi-spec/swagger.json";
sha256 = "sha256-EoqYTbtaTlzs7vneoNtXUmdnjTM/U+1gYwCiEy0lOcw=";
});
}
];
generate.istio = pkgs.linkFarm "istio-generated.nix" [{
name = "latest.nix";
path = generateIstio;
}];
2019-05-05 12:13:09 +02:00
tests = {
2021-04-28 21:15:58 -05:00
k8s-1_19 = runK8STests "1.19";
k8s-1_20 = runK8STests "1.20";
k8s-1_21 = runK8STests "1.21";
2019-02-12 16:22:18 +01:00
};
2019-03-07 18:03:51 +01:00
test-results = pkgs.recurseIntoAttrs (mapAttrs
(_: t: pkgs.recurseIntoAttrs {
results = pkgs.recurseIntoAttrs t.results;
result = t.result;
})
tests);
2019-05-05 12:13:09 +02:00
test-check =
2019-05-05 12:13:09 +02:00
if !(all (test: test.success) (attrValues tests))
2019-03-08 00:39:09 +01:00
then throw "tests failed"
else true;
examples = import ./examples { };
}