nix: attempt to fix VM tests; general cleanup
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I65f6909ef02ab4599f5b0bbc0930367e6a6a6964
This commit is contained in:
parent
83071514a3
commit
a2b638d4db
26 changed files with 2320 additions and 2939 deletions
|
|
@ -1,25 +1,56 @@
|
|||
# Common VM configuration for FC integration tests
|
||||
{
|
||||
self,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkDefault;
|
||||
fc-packages = self.packages.${pkgs.stdenv.hostPlatform.system};
|
||||
in {
|
||||
# Common machine configuration for all FC integration tests
|
||||
config = {
|
||||
## VM hardware
|
||||
virtualisation = {
|
||||
memorySize = 2048;
|
||||
cores = 2;
|
||||
diskSize = 10000;
|
||||
graphics = false;
|
||||
|
||||
# Forward guest:3000 -> host:3000 so the dashboard is reachable
|
||||
forwardPorts = [
|
||||
{
|
||||
from = "host";
|
||||
host.port = 3000;
|
||||
guest.port = 3000;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# Machine config
|
||||
programs.git.enable = true;
|
||||
security.sudo.enable = true;
|
||||
|
||||
# Ensure nix and zstd are available for cache endpoints
|
||||
environment.systemPackages = with pkgs; [nix nix-eval-jobs zstd curl jq openssl];
|
||||
|
||||
services.fc = {
|
||||
# Enable Nix flakes and nix-command experimental features required by evaluator
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
|
||||
# VM tests have no network. We need to disable substituters to prevent
|
||||
# Nix from trying to contact cache.nixos.org and timing out each time.
|
||||
nix.settings.substituters = lib.mkForce [];
|
||||
|
||||
# Allow incoming requests on port 3000 to make the dashboard accessible from
|
||||
# the host machine.
|
||||
networking.firewall.allowedTCPPorts = [3000];
|
||||
|
||||
services.fc-ci = {
|
||||
enable = true;
|
||||
package = fc-packages.fc-server;
|
||||
evaluatorPackage = fc-packages.fc-evaluator;
|
||||
queueRunnerPackage = fc-packages.fc-queue-runner;
|
||||
migratePackage = fc-packages.fc-migrate-cli;
|
||||
|
||||
package = mkDefault fc-packages.fc-server;
|
||||
evaluatorPackage = mkDefault fc-packages.fc-evaluator;
|
||||
queueRunnerPackage = mkDefault fc-packages.fc-queue-runner;
|
||||
migratePackage = mkDefault fc-packages.fc-migrate-cli;
|
||||
|
||||
server.enable = true;
|
||||
evaluator.enable = true;
|
||||
|
|
@ -45,39 +76,47 @@ in {
|
|||
show_timestamps = true;
|
||||
};
|
||||
|
||||
evaluator.poll_interval = 5;
|
||||
evaluator.work_dir = "/var/lib/fc/evaluator";
|
||||
queue_runner.poll_interval = 3;
|
||||
queue_runner.work_dir = "/var/lib/fc/queue-runner";
|
||||
evaluator = {
|
||||
poll_interval = 5;
|
||||
work_dir = "/var/lib/fc/evaluator";
|
||||
nix_timeout = 60;
|
||||
};
|
||||
|
||||
# Declarative bootstrap: project + API key created on startup
|
||||
declarative = {
|
||||
projects = [
|
||||
{
|
||||
name = "declarative-project";
|
||||
repository_url = "https://github.com/test/declarative";
|
||||
description = "Bootstrap test project";
|
||||
jobsets = [
|
||||
{
|
||||
name = "packages";
|
||||
nix_expression = "packages";
|
||||
enabled = true;
|
||||
flake_mode = true;
|
||||
check_interval = 300;
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
api_keys = [
|
||||
{
|
||||
name = "bootstrap-admin";
|
||||
key = "fc_bootstrap_key";
|
||||
role = "admin";
|
||||
}
|
||||
];
|
||||
queue_runner = {
|
||||
poll_interval = 3;
|
||||
work_dir = "/var/lib/fc/queue-runner";
|
||||
};
|
||||
};
|
||||
|
||||
# Declarative configuration for VM tests
|
||||
# This is set outside of settings so the NixOS module can transform field names
|
||||
declarative.apiKeys = [
|
||||
{
|
||||
name = "bootstrap-admin";
|
||||
key = "fc_bootstrap_key";
|
||||
role = "admin";
|
||||
}
|
||||
];
|
||||
|
||||
# Declarative project for tests that expect bootstrapped data
|
||||
# Jobset is disabled so evaluator won't try to fetch from GitHub
|
||||
declarative.projects = [
|
||||
{
|
||||
name = "declarative-project";
|
||||
repositoryUrl = "https://github.com/test/declarative";
|
||||
description = "Test declarative project";
|
||||
jobsets = [
|
||||
{
|
||||
name = "packages";
|
||||
nixExpression = "packages";
|
||||
flakeMode = true;
|
||||
enabled = true;
|
||||
checkInterval = 3600;
|
||||
state = "disabled"; # disabled: exists but won't be evaluated
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue