Add local builder
This commit is contained in:
+59
-4
@@ -5,8 +5,16 @@ let
|
|||||||
ciDomain = "ci.thehellings.com";
|
ciDomain = "ci.thehellings.com";
|
||||||
ciPort = "17080";
|
ciPort = "17080";
|
||||||
droneDir = "/var/lib/drone";
|
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 {
|
in {
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.drone-runner-exec ];
|
||||||
##########################################################################################
|
##########################################################################################
|
||||||
###########
|
###########
|
||||||
# GIT SERVICES
|
# GIT SERVICES
|
||||||
@@ -91,13 +99,50 @@ in {
|
|||||||
ports = [ "${ciPort}:80" ];
|
ports = [ "${ciPort}:80" ];
|
||||||
volumes = [ "${droneDir}:/data" ];
|
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 = {
|
systemd.services = {
|
||||||
StateDirectory = "drone";
|
"podman-drone".serviceConfig = {
|
||||||
StateDirectoryMode = pkgs.lib.mkForce "0777";
|
StateDirectory = "drone";
|
||||||
WorkingDirectory = droneDir;
|
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}" = {
|
greg.proxies."${ciDomain}" = {
|
||||||
@@ -105,4 +150,14 @@ in {
|
|||||||
ssl = true;
|
ssl = true;
|
||||||
genAliases = false;
|
genAliases = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
##########################################################################################
|
||||||
|
###########
|
||||||
|
# CI WORKERS
|
||||||
|
##########
|
||||||
|
##########################################################################################
|
||||||
|
virtualisation.podman = {
|
||||||
|
enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user