2015-12-30 01:05:14 +00:00
|
|
|
{ lib, config, pkgs, ... }:
|
2016-06-18 11:26:22 +00:00
|
|
|
|
2016-10-20 18:54:38 +00:00
|
|
|
with import <stockholm/lib>;
|
2016-06-18 11:26:22 +00:00
|
|
|
|
|
|
|
let
|
2016-07-23 17:19:18 +00:00
|
|
|
sshHostConfig = pkgs.writeText "ssh-config" ''
|
|
|
|
ControlMaster auto
|
|
|
|
ControlPath /tmp/%u_sshmux_%r@%h:%p
|
|
|
|
ControlPersist 4h
|
|
|
|
'';
|
2016-06-18 11:26:22 +00:00
|
|
|
|
|
|
|
in {
|
2017-04-12 19:05:18 +00:00
|
|
|
config.services.nginx.virtualHosts.build = {
|
|
|
|
serverAliases = [ "build.prism.r" ];
|
|
|
|
locations."/".extraConfig = ''
|
|
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
proxy_pass http://localhost:${toString config.krebs.buildbot.master.web.port};
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2016-06-18 11:26:22 +00:00
|
|
|
config.krebs.buildbot.master = let
|
2017-04-18 15:04:40 +00:00
|
|
|
stockholm-mirror-url = http://cgit.prism.r/stockholm ;
|
2016-04-19 10:05:49 +00:00
|
|
|
in {
|
2016-11-21 18:39:50 +00:00
|
|
|
workers = {
|
|
|
|
testworker = "lasspass";
|
2015-12-30 01:05:14 +00:00
|
|
|
};
|
|
|
|
change_source.stockholm = ''
|
2016-04-19 10:05:49 +00:00
|
|
|
stockholm_repo = '${stockholm-mirror-url}'
|
2016-11-28 22:24:47 +00:00
|
|
|
cs.append(
|
|
|
|
changes.GitPoller(
|
2015-12-30 01:05:14 +00:00
|
|
|
stockholm_repo,
|
2016-04-19 10:05:49 +00:00
|
|
|
workdir='stockholm-poller', branches=True,
|
2015-12-30 01:05:14 +00:00
|
|
|
project='stockholm',
|
2017-06-19 23:05:50 +00:00
|
|
|
pollinterval=10
|
2016-11-28 22:24:47 +00:00
|
|
|
)
|
|
|
|
)
|
2015-12-30 01:05:14 +00:00
|
|
|
'';
|
|
|
|
scheduler = {
|
2016-06-25 08:39:35 +00:00
|
|
|
build-scheduler = ''
|
|
|
|
# build all hosts
|
2016-11-28 22:24:47 +00:00
|
|
|
sched.append(
|
|
|
|
schedulers.SingleBranchScheduler(
|
|
|
|
change_filter=util.ChangeFilter(branch_re=".*"),
|
|
|
|
treeStableTimer=10,
|
|
|
|
name="build-all-branches",
|
2017-06-19 23:05:16 +00:00
|
|
|
builderNames=["build-hosts"]
|
2016-11-28 22:24:47 +00:00
|
|
|
)
|
|
|
|
)
|
2016-06-10 22:26:21 +00:00
|
|
|
'';
|
2015-12-30 01:05:14 +00:00
|
|
|
};
|
|
|
|
builder_pre = ''
|
|
|
|
# prepare grab_repo step for stockholm
|
2016-11-28 22:24:47 +00:00
|
|
|
grab_repo = steps.Git(
|
|
|
|
repourl=stockholm_repo,
|
|
|
|
mode='full'
|
|
|
|
)
|
2015-12-30 01:05:14 +00:00
|
|
|
|
2016-06-10 22:26:21 +00:00
|
|
|
# TODO: get nixpkgs/stockholm paths from krebs
|
2016-06-23 15:48:42 +00:00
|
|
|
env_lass = {
|
2016-06-18 11:26:22 +00:00
|
|
|
"LOGNAME": "lass",
|
|
|
|
"NIX_REMOTE": "daemon",
|
|
|
|
"dummy_secrets": "true",
|
|
|
|
}
|
2016-06-25 07:58:00 +00:00
|
|
|
env_makefu = {
|
|
|
|
"LOGNAME": "makefu",
|
|
|
|
"NIX_REMOTE": "daemon",
|
|
|
|
"dummy_secrets": "true",
|
|
|
|
}
|
2017-01-26 22:44:31 +00:00
|
|
|
env_nin = {
|
|
|
|
"LOGNAME": "nin",
|
|
|
|
"NIX_REMOTE": "daemon",
|
|
|
|
"dummy_secrets": "true",
|
|
|
|
}
|
2016-08-03 06:19:47 +00:00
|
|
|
env_shared = {
|
|
|
|
"LOGNAME": "shared",
|
|
|
|
"NIX_REMOTE": "daemon",
|
|
|
|
"dummy_secrets": "true",
|
|
|
|
}
|
2017-06-19 23:10:06 +00:00
|
|
|
env_tv = {
|
|
|
|
"LOGNAME": "tv",
|
|
|
|
"NIX_REMOTE": "daemon",
|
|
|
|
"dummy_secrets": "true",
|
|
|
|
}
|
2015-12-30 01:05:14 +00:00
|
|
|
|
|
|
|
# prepare nix-shell
|
|
|
|
# the dependencies which are used by the test script
|
2016-11-28 22:24:47 +00:00
|
|
|
deps = [
|
|
|
|
"gnumake",
|
|
|
|
"jq",
|
|
|
|
"nix",
|
|
|
|
"(import <stockholm>).pkgs.populate",
|
|
|
|
"openssh"
|
|
|
|
]
|
2015-12-30 01:05:14 +00:00
|
|
|
# TODO: --pure , prepare ENV in nix-shell command:
|
|
|
|
# SSL_CERT_FILE,LOGNAME,NIX_REMOTE
|
2016-11-28 22:24:47 +00:00
|
|
|
nixshell = [
|
|
|
|
"nix-shell",
|
2017-06-19 23:16:33 +00:00
|
|
|
"-I", "/var/src",
|
2016-11-28 22:24:47 +00:00
|
|
|
"-I", "stockholm=.",
|
|
|
|
"-p"
|
|
|
|
] + deps + [ "--run" ]
|
2015-12-30 01:05:14 +00:00
|
|
|
|
|
|
|
# prepare addShell function
|
|
|
|
def addShell(factory,**kwargs):
|
|
|
|
factory.addStep(steps.ShellCommand(**kwargs))
|
|
|
|
'';
|
|
|
|
builder = {
|
2016-11-29 10:15:57 +00:00
|
|
|
build-hosts = ''
|
2016-06-10 22:26:21 +00:00
|
|
|
f = util.BuildFactory()
|
|
|
|
f.addStep(grab_repo)
|
2017-06-19 23:08:42 +00:00
|
|
|
|
|
|
|
def build_host(env, host):
|
|
|
|
addShell(f,name="build-{}".format(i),env=env,
|
|
|
|
command=nixshell + ["mkdir -p $HOME/$LOGNAME && touch $HOME/$LOGNAME/.populate; \
|
|
|
|
echo $HOME; echo $LOGNAME; \
|
|
|
|
test -e $HOME/$LOGNAME/nixpkgs || cp -r /var/src/nixpkgs $HOME/$LOGNAME/; \
|
|
|
|
make NIX_PATH=$HOME/$LOGNAME:secrets=/var/src/stockholm/null test method=build \
|
|
|
|
target=buildbotworker@${config.krebs.build.host.name}$HOME/$LOGNAME \
|
|
|
|
system={}".format(host)]
|
2016-11-29 12:56:59 +00:00
|
|
|
)
|
2016-11-28 22:24:47 +00:00
|
|
|
|
2017-06-19 23:10:06 +00:00
|
|
|
for i in [ "alnus", "mu", "nomic", "wu", "xu", "zu" ]:
|
|
|
|
build_host(env_tv, i)
|
|
|
|
|
2017-06-01 10:49:21 +00:00
|
|
|
for i in [ "mors", "uriel", "shodan", "icarus", "cloudkrebs", "echelon", "dishfire", "prism" ]:
|
2017-06-19 23:08:42 +00:00
|
|
|
build_host(env_lass, i)
|
2016-06-10 22:26:21 +00:00
|
|
|
|
2016-07-28 10:58:54 +00:00
|
|
|
for i in [ "x", "wry", "vbob", "wbob", "shoney" ]:
|
2017-06-19 23:08:42 +00:00
|
|
|
build_host(env_makefu, i)
|
2016-06-25 07:58:00 +00:00
|
|
|
|
2017-01-26 22:44:31 +00:00
|
|
|
for i in [ "hiawatha", "onondaga" ]:
|
2017-06-19 23:08:42 +00:00
|
|
|
build_host(env_nin, i)
|
|
|
|
|
|
|
|
for i in [ "test-minimal-deploy", "test-all-krebs-modules", "wolf", "test-centos7" ]:
|
|
|
|
build_host(env_shared, i)
|
2017-01-26 22:44:31 +00:00
|
|
|
|
2016-11-28 22:24:47 +00:00
|
|
|
bu.append(
|
|
|
|
util.BuilderConfig(
|
2016-11-29 10:15:57 +00:00
|
|
|
name="build-hosts",
|
2016-11-28 22:24:47 +00:00
|
|
|
workernames=workernames,
|
|
|
|
factory=f
|
|
|
|
)
|
|
|
|
)
|
2016-06-25 07:58:00 +00:00
|
|
|
|
2016-08-09 20:49:17 +00:00
|
|
|
'';
|
2015-12-30 01:05:14 +00:00
|
|
|
};
|
|
|
|
enable = true;
|
|
|
|
web.enable = true;
|
|
|
|
irc = {
|
|
|
|
enable = true;
|
2016-02-01 14:57:54 +00:00
|
|
|
nick = "buildbot-lass";
|
2016-11-11 07:47:46 +00:00
|
|
|
server = "ni.r";
|
2017-02-15 23:06:15 +00:00
|
|
|
channels = [ { channel = "retiolum"; } { channel = "noise"; } ];
|
2015-12-30 01:05:14 +00:00
|
|
|
allowForce = true;
|
|
|
|
};
|
2017-04-12 10:15:15 +00:00
|
|
|
extraConfig = ''
|
2017-04-12 19:05:18 +00:00
|
|
|
c['buildbotURL'] = "http://build.prism.r/"
|
2017-04-12 10:15:15 +00:00
|
|
|
'';
|
2015-12-30 01:05:14 +00:00
|
|
|
};
|
|
|
|
|
2016-11-21 18:39:50 +00:00
|
|
|
config.krebs.buildbot.worker = {
|
2015-12-30 01:05:14 +00:00
|
|
|
enable = true;
|
|
|
|
masterhost = "localhost";
|
2016-11-21 18:39:50 +00:00
|
|
|
username = "testworker";
|
2015-12-30 01:05:14 +00:00
|
|
|
password = "lasspass";
|
2016-07-16 19:43:38 +00:00
|
|
|
packages = with pkgs; [ gnumake jq nix populate ];
|
2016-04-19 10:05:49 +00:00
|
|
|
};
|
2016-06-18 11:26:22 +00:00
|
|
|
config.krebs.iptables = {
|
2016-04-19 10:05:49 +00:00
|
|
|
tables = {
|
|
|
|
filter.INPUT.rules = [
|
|
|
|
{ predicate = "-p tcp --dport 9989"; target = "ACCEPT"; }
|
|
|
|
];
|
|
|
|
};
|
2015-12-30 01:05:14 +00:00
|
|
|
};
|
2016-06-18 11:26:22 +00:00
|
|
|
|
|
|
|
#ssh workaround for make test
|
|
|
|
options.lass.build-ssh-privkey = mkOption {
|
|
|
|
type = types.secret-file;
|
|
|
|
default = {
|
2017-05-16 07:42:06 +00:00
|
|
|
path = "${config.users.users.buildbotworker.home}/.ssh/id_rsa";
|
2016-11-21 18:39:50 +00:00
|
|
|
owner = { inherit (config.users.users.buildbotworker ) name uid;};
|
2016-06-18 11:26:22 +00:00
|
|
|
source-path = toString <secrets> + "/build.ssh.key";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
config.krebs.secret.files = {
|
|
|
|
build-ssh-privkey = config.lass.build-ssh-privkey;
|
|
|
|
};
|
2017-05-16 07:42:06 +00:00
|
|
|
config.users.users.buildbotworker = {
|
|
|
|
useDefaultShell = true;
|
|
|
|
openssh.authorizedKeys.keys = [
|
|
|
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiV0Xn60aVLHC/jGJknlrcxSvKd/MVeh2tjBpxSBT3II9XQGZhID2Gdh84eAtoWyxGVFQx96zCHSuc7tfE2YP2LhXnwaxHTeDc8nlMsdww53lRkxihZIEV7QHc/3LRcFMkFyxdszeUfhWz8PbJGL2GYT+s6CqoPwwa68zF33U1wrMOAPsf/NdpSN4alsqmjFc2STBjnOd9dXNQn1VEJQqGLG3kR3WkCuwMcTLS5eu0KLwG4i89Twjy+TGp2QsF5K6pNE+ZepwaycRgfYzGcPTn5d6YQXBgcKgHMoSJsK8wqpr0+eFPCDiEA3HDnf76E4mX4t6/9QkMXCLmvs0IO/WP"
|
|
|
|
];
|
2016-06-18 11:26:22 +00:00
|
|
|
};
|
2015-12-30 01:05:14 +00:00
|
|
|
}
|