diff --git a/nixos/tests/k3s/auto-deploy.nix b/nixos/tests/k3s/auto-deploy.nix index 19be88dc7402..11eed4aef95f 100644 --- a/nixos/tests/k3s/auto-deploy.nix +++ b/nixos/tests/k3s/auto-deploy.nix @@ -1,3 +1,4 @@ +# Tests whether container images are imported and auto deploying manifests work import ../make-test-python.nix ( { pkgs, @@ -108,8 +109,8 @@ import ../make-test-python.nix ( machine.succeed("ls /var/lib/rancher/k3s/server/manifests/hello.yaml") # check if container images got imported - machine.succeed("crictl img | grep 'test\.local/pause'") - machine.succeed("crictl img | grep 'test\.local/hello'") + machine.wait_until_succeeds("crictl img | grep 'test\.local/pause'") + machine.wait_until_succeeds("crictl img | grep 'test\.local/hello'") # check if resources of manifests got created machine.wait_until_succeeds("kubectl get ns foo") diff --git a/nixos/tests/k3s/default.nix b/nixos/tests/k3s/default.nix index 529cf312be7e..6825ba997fdb 100644 --- a/nixos/tests/k3s/default.nix +++ b/nixos/tests/k3s/default.nix @@ -7,9 +7,7 @@ let allK3s = lib.filterAttrs (n: _: lib.strings.hasPrefix "k3s_" n) pkgs; in { - # Test whether container images are imported and auto deploying manifests work auto-deploy = lib.mapAttrs (_: k3s: import ./auto-deploy.nix { inherit system pkgs k3s; }) allK3s; - # Testing K3s with Etcd backend etcd = lib.mapAttrs ( _: k3s: import ./etcd.nix { @@ -17,8 +15,6 @@ in inherit (pkgs) etcd; } ) allK3s; - # Run a single node k3s cluster and verify a pod can run single-node = lib.mapAttrs (_: k3s: import ./single-node.nix { inherit system pkgs k3s; }) allK3s; - # Run a multi-node k3s cluster and verify pod networking works across nodes multi-node = lib.mapAttrs (_: k3s: import ./multi-node.nix { inherit system pkgs k3s; }) allK3s; } diff --git a/nixos/tests/k3s/etcd.nix b/nixos/tests/k3s/etcd.nix index fa6012afd54c..149185d551d7 100644 --- a/nixos/tests/k3s/etcd.nix +++ b/nixos/tests/k3s/etcd.nix @@ -1,3 +1,4 @@ +# Tests K3s with Etcd backend import ../make-test-python.nix ( { pkgs, diff --git a/nixos/tests/k3s/multi-node.nix b/nixos/tests/k3s/multi-node.nix index 504ac10d96c1..361f4946660d 100644 --- a/nixos/tests/k3s/multi-node.nix +++ b/nixos/tests/k3s/multi-node.nix @@ -1,3 +1,4 @@ +# A test that runs a multi-node k3s cluster and verify pod networking works across nodes import ../make-test-python.nix ( { pkgs, diff --git a/nixos/tests/k3s/single-node.nix b/nixos/tests/k3s/single-node.nix index 220f6086b092..e0bc80e8614f 100644 --- a/nixos/tests/k3s/single-node.nix +++ b/nixos/tests/k3s/single-node.nix @@ -1,3 +1,4 @@ +# A test that runs a single node k3s cluster and verify a pod can run import ../make-test-python.nix ( { pkgs, diff --git a/pkgs/applications/networking/cluster/k3s/builder.nix b/pkgs/applications/networking/cluster/k3s/builder.nix index 4973b5e67db9..eeff2578efb7 100644 --- a/pkgs/applications/networking/cluster/k3s/builder.nix +++ b/pkgs/applications/networking/cluster/k3s/builder.nix @@ -88,12 +88,12 @@ lib: # make sure they're in the path if desired. let - baseMeta = with lib; { + baseMeta = { description = "Lightweight Kubernetes distribution"; - license = licenses.asl20; + license = lib.licenses.asl20; homepage = "https://k3s.io"; maintainers = lib.teams.k3s.members; - platforms = platforms.linux; + platforms = lib.platforms.linux; # resolves collisions with other installations of kubectl, crictl, ctr # prefer non-k3s versions @@ -367,6 +367,7 @@ buildGoModule rec { # https://github.com/NixOS/nixpkgs/pull/158089#discussion_r799965694 # So, why do we use buildGoModule at all? For the `vendorHash` / `go mod download` stuff primarily. buildPhase = '' + runHook preBuild patchShebangs ./scripts/package-cli ./scripts/download ./scripts/build-upload # copy needed 'go generate' inputs into place @@ -387,12 +388,14 @@ buildGoModule rec { ./scripts/package-cli mkdir -p $out/bin + runHook postBuild ''; # Otherwise it depends on 'getGoDirs', which is normally set in buildPhase doCheck = false; installPhase = '' + runHook preInstall # wildcard to match the arm64 build too install -m 0755 dist/artifacts/k3s* -D $out/bin/k3s wrapProgram $out/bin/k3s \ @@ -404,27 +407,31 @@ buildGoModule rec { install -m 0755 ${k3sKillallSh} -D $out/bin/k3s-killall.sh wrapProgram $out/bin/k3s-killall.sh \ --prefix PATH : ${lib.makeBinPath (k3sRuntimeDeps ++ k3sKillallDeps)} + runHook postInstall ''; doInstallCheck = true; installCheckPhase = '' + runHook preInstallCheck $out/bin/k3s --version | grep -F "v${k3sVersion}" >/dev/null + runHook postInstallCheck ''; - passthru.updateScript = updateScript; - - passthru.mkTests = - version: - let - k3s_version = "k3s_" + lib.replaceStrings [ "." ] [ "_" ] (lib.versions.majorMinor version); - in - { - auto-deploy = nixosTests.k3s.auto-deploy.${k3s_version}; - etcd = nixosTests.k3s.etcd.${k3s_version}; - single-node = nixosTests.k3s.single-node.${k3s_version}; - multi-node = nixosTests.k3s.multi-node.${k3s_version}; - }; - passthru.tests = passthru.mkTests k3sVersion; + passthru = { + k3sCNIPlugins = k3sCNIPlugins; + k3sContainerd = k3sContainerd; + k3sRepo = k3sRepo; + k3sRoot = k3sRoot; + k3sServer = k3sServer; + mkTests = + version: + let + k3s_version = "k3s_" + lib.replaceStrings [ "." ] [ "_" ] (lib.versions.majorMinor version); + in + lib.mapAttrs (name: value: nixosTests.k3s.${name}.${k3s_version}) nixosTests.k3s; + tests = passthru.mkTests k3sVersion; + updateScript = updateScript; + }; meta = baseMeta; }