Add local builder

This commit is contained in:
Greg Hellings
2022-10-10 21:52:49 +00:00
parent 9aaa2621e4
commit 52a87a2541
+59 -4
View File
@@ -5,8 +5,16 @@ let
ciDomain = "ci.thehellings.com";
ciPort = "17080";
droneDir = "/var/lib/drone";
execWorkDir = "/var/lib/drone-exec";
droneWorkerEnvironment = {
DRONE_RPC_PROTO = "https";
DRONE_RPC_HOST = ciDomain;
DRONE_RUNNER_CAPACITY = "2";
DRONE_RUNNER_NAME = "docker";
};
in {
environment.systemPackages = [ pkgs.drone-runner-exec ];
##########################################################################################
###########
# GIT SERVICES
@@ -91,13 +99,50 @@ in {
ports = [ "${ciPort}:80" ];
volumes = [ "${droneDir}:/data" ];
};
"drone-docker" = {
environment = droneWorkerEnvironment;
environmentFiles = [
"/run/agenix/drone"
];
extraOptions = [ "--pull=newer" ];
image = "drone/drone-runner-docker:1.8";
volumes = [ "/run/podman/podman.sock:/var/run/docker.sock" ];
};
};
};
systemd.services."podman-drone".serviceConfig = {
StateDirectory = "drone";
StateDirectoryMode = pkgs.lib.mkForce "0777";
WorkingDirectory = droneDir;
systemd.services = {
"podman-drone".serviceConfig = {
StateDirectory = "drone";
StateDirectoryMode = pkgs.lib.mkForce "0777";
WorkingDirectory = droneDir;
};
"drone-exec-runner" = {
environment = droneWorkerEnvironment;
description = "Drone pipeline runner that executes locally";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [
bash
drone-runner-exec
git
podman
];
preStart = ''
mkdir -p ${execWorkDir}
cat /run/agenix/drone > ${execWorkDir}/conf.env
echo "" >> ${execWorkDir}/conf.env
'';
script = "exec ${pkgs.drone-runner-exec}/bin/drone-runner-exec daemon ${execWorkDir}/conf.env";
serviceConfig = {
StateDirectory = "drone-exec";
StateDirectoryMode = pkgs.lib.mkForce "0777";
};
};
};
greg.proxies."${ciDomain}" = {
@@ -105,4 +150,14 @@ in {
ssl = true;
genAliases = false;
};
##########################################################################################
###########
# CI WORKERS
##########
##########################################################################################
virtualisation.podman = {
enable = true;
dockerCompat = true;
};
}