snowfield/modules/buildbot/default.nix

103 lines
3 KiB
Nix

{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.luj.buildbot;
in
{
options.luj.buildbot = {
enable = mkEnableOption "activate buildbot service";
};
config = mkIf cfg.enable {
services.buildbot-nix.master = {
enable = true;
domain = "ci.julienmalka.me";
workersFile = config.age.secrets.buildbot-nix-workers.path;
buildSystems = [
"x86_64-linux"
"aarch64-linux"
];
github = {
tokenFile = config.age.secrets.github-token.path;
webhookSecretFile = config.age.secrets.github-webhook-secret.path;
oauthSecretFile = config.age.secrets.github-oauth-secret.path;
oauthId = "bba3e144501aa5b8a5dd";
user = "JulienMalka";
topic = "nix-ci";
};
admins = [
"JulienMalka"
"camillemndn"
];
evalWorkerCount = 10; # limit number of concurrent evaluations
};
systemd.services.buildbot-worker.path = lib.mkForce [
pkgs.attic-client
pkgs.git
pkgs.openssh
pkgs.gh
pkgs.nix
pkgs.nix-eval-jobs
pkgs.coreutils
];
services.nginx.virtualHosts."ci.julienmalka.me" = {
forceSSL = true;
enableACME = true;
};
age.secrets = {
github-token.file = ../../secrets/github-token-secret.age;
github-webhook-secret.file = ../../secrets/github-webhook-secret.age;
github-oauth-secret.file = ../../secrets/github-oauth-secret.age;
buildbot-nix-workers.file = ../../secrets/buildbot-nix-workers.age;
buildbot-nix-worker-password = {
file = ../../secrets/buildbot-nix-worker-password.age;
owner = "buildbot-worker";
};
};
systemd.services.buildbot-worker.environment.WORKER_COUNT = "14";
services.buildbot-nix.worker = {
enable = true;
workerPasswordFile = config.age.secrets.buildbot-nix-worker-password.path;
};
services.buildbot-master = {
pythonPackages = _: [
pkgs.buildbot-plugins.badges
pkgs.buildbot-plugins.www
];
extraConfig = ''
c["www"].update({"plugins": {"badges": {
"left_pad" : 5,
"left_text": "Build Status", # text on the left part of the image
"left_color": "#555", # color of the left part of the image
"right_pad" : 5,
"border_radius" : 5, # Border Radius on flat and plastic badges
# style of the template availables are "flat", "flat-square", "plastic"
"template_name": "flat.svg.j2", # name of the template
"font_face": "DejaVu Sans",
"font_size": 11,
"color_scheme": { # color to be used for right part of the image
"exception": "#007ec6",
"failure": "#e05d44",
"retry": "#007ec6",
"running": "#007ec6",
"skipped": "a4a61d",
"success": "#4c1",
"unknown": "#9f9f9f",
"warnings": "#dfb317"
}
}}})
'';
};
};
}