mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 15:22:59 +01:00
nixos/gitlab-runner: Add gitlab-runner.clear-docker-cache
service
This commit is contained in:
parent
5457fdf273
commit
c8eae7a526
1 changed files with 53 additions and 0 deletions
|
@ -453,6 +453,43 @@ in
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
clear-docker-cache = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Whether to periodically prune gitlab runner's Docker resources. If
|
||||||
|
enabled, a systemd timer will run {command}`clear-docker-cache` as
|
||||||
|
specified by the `dates` option.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
flags = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ ];
|
||||||
|
example = [ "prune" ];
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Any additional flags passed to {command}`clear-docker-cache`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dates = mkOption {
|
||||||
|
default = "weekly";
|
||||||
|
type = types.str;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Specification (in the format described by
|
||||||
|
{manpage}`systemd.time(7)`) of the time at
|
||||||
|
which the prune will occur.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
default = config.virtualisation.docker.package;
|
||||||
|
defaultText = literalExpression "config.virtualisation.docker.package";
|
||||||
|
example = literalExpression "pkgs.docker";
|
||||||
|
description = lib.mdDoc "Docker package to use for clearing up docker cache.";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
warnings = (mapAttrsToList
|
warnings = (mapAttrsToList
|
||||||
|
@ -497,6 +534,22 @@ in
|
||||||
KillMode = "process";
|
KillMode = "process";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# Enable periodic clear-docker-cache script
|
||||||
|
systemd.services.gitlab-runner-clear-docker-cache = {
|
||||||
|
description = "Prune gitlab-runner docker resources";
|
||||||
|
restartIfChanged = false;
|
||||||
|
unitConfig.X-StopOnRemoval = false;
|
||||||
|
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
|
||||||
|
path = [ cfg.clear-docker-cache.package pkgs.gawk ];
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
${pkgs.gitlab-runner}/bin/clear-docker-cache ${toString cfg.clear-docker-cache.flags}
|
||||||
|
'';
|
||||||
|
|
||||||
|
startAt = optional cfg.clear-docker-cache.enable cfg.clear-docker-cache.dates;
|
||||||
|
};
|
||||||
# Enable docker if `docker` executor is used in any service
|
# Enable docker if `docker` executor is used in any service
|
||||||
virtualisation.docker.enable = mkIf (
|
virtualisation.docker.enable = mkIf (
|
||||||
any (s: s.executor == "docker") (attrValues cfg.services)
|
any (s: s.executor == "docker") (attrValues cfg.services)
|
||||||
|
|
Loading…
Reference in a new issue