continuous-integration/drone/push Build is passing
This PR adds a declarative integration testing setup which includes 2 local VMs client and server which can be started and stopped via a command. The VMs are run with QEMU and created by https://github.com/microvm-nix/microvm.nix The key pair is generated for this use case and is safe to commit, it resolves the problem that the readFile function can only be used with git tracked files. --------- Co-authored-by: devydave <yannick-dev@tutanota.com> Reviewed-on: #902 Reviewed-by: p4u1 <133+p4u1@noreply.git.coopcloud.tech> Co-authored-by: devydave <bittedanke@tutanota.com>
107 lines
2.6 KiB
Nix
107 lines
2.6 KiB
Nix
{
|
|
description = "The Co-op Cloud utility belt";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
microvm = {
|
|
url = "github:astro/microvm.nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
microvm,
|
|
flake-utils,
|
|
}:
|
|
let
|
|
system = "x86_64-linux";
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
publicKey = builtins.readFile ./tests/resources/local_integration_ssh.pub;
|
|
privateKey = builtins.readFile ./tests/resources/local_integration_ssh;
|
|
pathToRepo = builtins.readFile ./tests/resources/path_to_repo;
|
|
# local DNS aliases for the server host
|
|
extraHosts = builtins.readFile ./tests/resources/extra_hosts;
|
|
username = "abra";
|
|
password = "abra";
|
|
defaultDNS = [
|
|
# Quad9.net
|
|
"9.9.9.9"
|
|
"149.112.112.112"
|
|
"2620:fe::fe"
|
|
"2620:fe::9"
|
|
];
|
|
in
|
|
{
|
|
nixosConfigurations = {
|
|
abra-client = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [
|
|
microvm.nixosModules.microvm
|
|
./nix/hosts/client/configuration.nix
|
|
];
|
|
specialArgs = {
|
|
inherit
|
|
publicKey
|
|
privateKey
|
|
username
|
|
password
|
|
defaultDNS
|
|
extraHosts
|
|
pathToRepo
|
|
;
|
|
};
|
|
};
|
|
abra-server = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [
|
|
microvm.nixosModules.microvm
|
|
./nix/hosts/server/configuration.nix
|
|
];
|
|
specialArgs = {
|
|
inherit
|
|
publicKey
|
|
privateKey
|
|
username
|
|
password
|
|
defaultDNS
|
|
;
|
|
};
|
|
};
|
|
};
|
|
nixosModules = rec {
|
|
host = {
|
|
imports = [
|
|
microvm.nixosModules.host
|
|
./nix/modules/host.nix
|
|
];
|
|
};
|
|
default = host;
|
|
};
|
|
packages = rec {
|
|
abra = pkgs.callPackage ./nix/package.nix { };
|
|
default = abra;
|
|
};
|
|
apps = rec {
|
|
abra = flake-utils.lib.mkApp { drv = self.packages.${system}.abra; };
|
|
default = abra;
|
|
};
|
|
devShells.${system}.default = pkgs.mkShell {
|
|
# testing env variables
|
|
BATS_LIB_PATH = "~/.local/share/bats/";
|
|
TEST_SERVER = "abra.local";
|
|
ABRA_DIR = "$HOME/.abra_test";
|
|
|
|
packages = with pkgs; [
|
|
go_1_26
|
|
gnumake
|
|
gopls
|
|
];
|
|
};
|
|
|
|
};
|
|
}
|