From db5921f163c59673ae0307088cd14bdda836c6d8 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 6 Sep 2018 22:34:33 +0200 Subject: repo-sync: announcemnaster --- krebs/2configs/repo-sync.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'krebs') diff --git a/krebs/2configs/repo-sync.nix b/krebs/2configs/repo-sync.nix index 7c3b2c90e..0f3d3326f 100644 --- a/krebs/2configs/repo-sync.nix +++ b/krebs/2configs/repo-sync.nix @@ -20,7 +20,10 @@ let verbose = false; channel = "#xxx"; server = "irc.r"; - branches = [ "newest" ]; + branches = [ + "master" + "newest" + ]; }; }; }; -- cgit v1.2.3 From aa04423e3a313271fca4d951d8717459e7969d60 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 6 Sep 2018 23:02:56 +0200 Subject: irc-announce: whitelist refs instead of branches --- krebs/2configs/repo-sync.nix | 12 ++++++------ krebs/5pkgs/simple/git-hooks/default.nix | 15 ++++++++------- 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'krebs') diff --git a/krebs/2configs/repo-sync.nix b/krebs/2configs/repo-sync.nix index 0f3d3326f..1ae6d6c11 100644 --- a/krebs/2configs/repo-sync.nix +++ b/krebs/2configs/repo-sync.nix @@ -16,14 +16,14 @@ let cgit.section = section; hooks = mkDefault { post-receive = pkgs.git-hooks.irc-announce { - nick = config.networking.hostName; - verbose = false; channel = "#xxx"; - server = "irc.r"; - branches = [ - "master" - "newest" + refs = [ + "refs/heads/master" + "refs/heads/newest" ]; + nick = config.networking.hostName; + server = "irc.r"; + verbose = false; }; }; }; diff --git a/krebs/5pkgs/simple/git-hooks/default.nix b/krebs/5pkgs/simple/git-hooks/default.nix index 1930c7f14..0a2c84410 100644 --- a/krebs/5pkgs/simple/git-hooks/default.nix +++ b/krebs/5pkgs/simple/git-hooks/default.nix @@ -6,11 +6,11 @@ with import ; # TODO irc-announce should return a derivation # but it cannot because krebs.git.repos.*.hooks :: attrsOf str irc-announce = - { branches ? [] - , cgit_endpoint ? "http://cgit.${nick}.r" + { cgit_endpoint ? "http://cgit.${nick}.r" , channel , nick , port ? 6667 + , refs ? [] , server , verbose ? false }: /* sh */ '' @@ -57,14 +57,15 @@ with import ; receive_mode=non-fast-forward fi - h=$(echo $ref | sed 's:^refs/heads/::') - - ${optionalString (branches != []) '' - if ! (echo "$h" | grep -qE "${concatStringsSep "|" branches}"); then - echo "we are not serving this branch: $h" + ${optionalString (refs != []) '' + if ! { echo "$ref" | grep -qE "${concatStringsSep "|" refs}"; }; then + echo "we are not announcing this ref: $h" exit 0 fi ''} + + h=$(echo $ref | sed 's:^refs/heads/::') + # empty_tree=$(git hash-object -t tree /dev/null) empty_tree=4b825dc6 -- cgit v1.2.3 From 86466154f11748365cdab50b6ac113bdfd5542be Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 6 Sep 2018 23:04:24 +0200 Subject: repo-sync: announce tags --- krebs/2configs/repo-sync.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'krebs') diff --git a/krebs/2configs/repo-sync.nix b/krebs/2configs/repo-sync.nix index 1ae6d6c11..13e1217a4 100644 --- a/krebs/2configs/repo-sync.nix +++ b/krebs/2configs/repo-sync.nix @@ -20,6 +20,7 @@ let refs = [ "refs/heads/master" "refs/heads/newest" + "refs/tags/*" ]; nick = config.networking.hostName; server = "irc.r"; -- cgit v1.2.3 From 136d7c2f41815eaa51221bfd13c7ff514a39ed73 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 8 Sep 2018 21:26:03 +0200 Subject: konsens: handle >2 commits --- krebs/3modules/konsens.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'krebs') diff --git a/krebs/3modules/konsens.nix b/krebs/3modules/konsens.nix index 47316d5d6..74895a971 100644 --- a/krebs/3modules/konsens.nix +++ b/krebs/3modules/konsens.nix @@ -68,7 +68,7 @@ let fi cd ${name} git fetch origin - git push origin $(git merge-base ${concatMapStringsSep " " (branch: "origin/${branch}") repo.branchesToCheck}):refs/heads/master + git push origin $(git merge-base --octopus ${concatMapStringsSep " " (branch: "origin/${branch}") repo.branchesToCheck}):refs/heads/master ''; WorkingDirectory = /var/lib/konsens; User = "konsens"; -- cgit v1.2.3 From 52017e173e4b037f7d31fa140e336d5e70a83d99 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 8 Sep 2018 23:20:09 +0200 Subject: buildbot-stockholm: add more changesources --- krebs/2configs/buildbot-stockholm.nix | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'krebs') diff --git a/krebs/2configs/buildbot-stockholm.nix b/krebs/2configs/buildbot-stockholm.nix index 13d4c6729..8537ce40c 100644 --- a/krebs/2configs/buildbot-stockholm.nix +++ b/krebs/2configs/buildbot-stockholm.nix @@ -4,6 +4,14 @@ let hostname = config.networking.hostName; + sourceRepos = [ + "http://cgit.enklave.r/stockholm" + "http://cgit.gum.r/stockholm" + "http://cgit.hotdog.r/stockholm" + "http://cgit.ni.r/stockholm" + "http://cgit.prism.r/stockholm" + ]; + build = pkgs.writeDash "build" '' set -eu export USER="$1" @@ -31,17 +39,16 @@ in slaves = { testslave = "lasspass"; }; - change_source.stockholm = '' - stockholm_repo = 'http://cgit.hotdog.r/stockholm' + change_source.stockholm = concatMapStrings (repo: '' cs.append( changes.GitPoller( - stockholm_repo, - workdir='stockholm-poller', branches=True, + "${repo}", + workdir='stockholm${elemAt(splitString "." repo) 1}', branches=True, project='stockholm', pollinterval=10 ) ) - ''; + '') sourceRepos; scheduler = { auto-scheduler = '' sched.append( @@ -69,7 +76,7 @@ in builder_pre = '' # prepare grab_repo step for stockholm grab_repo = steps.Git( - repourl=stockholm_repo, + repourl=util.Property('repository', 'http://cgit.hotdog.r/stockholm'), mode='full', submodules=True, ) -- cgit v1.2.3 From ee74ba6b405a09fbfa718b0308cb49a984b8b0ef Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 00:17:26 +0200 Subject: buildbot-classic: 0.8.16 -> 0.8.17 --- krebs/5pkgs/simple/buildbot-classic/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'krebs') diff --git a/krebs/5pkgs/simple/buildbot-classic/default.nix b/krebs/5pkgs/simple/buildbot-classic/default.nix index e6bafbd25..4fae6256d 100644 --- a/krebs/5pkgs/simple/buildbot-classic/default.nix +++ b/krebs/5pkgs/simple/buildbot-classic/default.nix @@ -2,7 +2,7 @@ python2Packages.buildPythonApplication rec { name = "buildbot-classic-${version}"; - version = "0.8.16"; + version = "0.8.17"; namePrefix = ""; patches = []; @@ -10,7 +10,7 @@ python2Packages.buildPythonApplication rec { owner = "krebs"; repo = "buildbot-classic"; rev = version; - sha256 = "0g686n6m0cjfyympl0ksansllx503gby3hx9gmc8hiyx6x5fkjha"; + sha256 = "0yn0n37rs2bhz9q0simnvyzz5sfrpqhbdm6pdj6qk7sab4y6xbq8"; }; postUnpack = "sourceRoot=\${sourceRoot}/master"; -- cgit v1.2.3 From b7d5dbd74be88e0d26dce173b523bf5019de548b Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 00:55:57 +0200 Subject: buildbot-stockholm: add more packages to slave --- krebs/2configs/buildbot-stockholm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'krebs') diff --git a/krebs/2configs/buildbot-stockholm.nix b/krebs/2configs/buildbot-stockholm.nix index 8537ce40c..6555b73f4 100644 --- a/krebs/2configs/buildbot-stockholm.nix +++ b/krebs/2configs/buildbot-stockholm.nix @@ -183,6 +183,6 @@ in masterhost = "localhost"; username = "testslave"; password = "lasspass"; - packages = with pkgs; [ gnumake jq nix populate ]; + packages = with pkgs; [ gnumake jq nix populate gnutar lzma gzip ]; }; } -- cgit v1.2.3 From d3c84b0d2981f46574046e19d8e3d618065b92a0 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 9 Sep 2018 10:04:13 +0200 Subject: buildbot-stockholm: build quietly and show trace --- krebs/2configs/buildbot-stockholm.nix | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'krebs') diff --git a/krebs/2configs/buildbot-stockholm.nix b/krebs/2configs/buildbot-stockholm.nix index 6555b73f4..add27f395 100644 --- a/krebs/2configs/buildbot-stockholm.nix +++ b/krebs/2configs/buildbot-stockholm.nix @@ -12,11 +12,26 @@ let "http://cgit.prism.r/stockholm" ]; + # usage: build USER HOST + # This executable is meant to be run with as working directory. + # USER is expected to be a subdirectory of the working directory. build = pkgs.writeDash "build" '' - set -eu - export USER="$1" - export SYSTEM="$2" - $(nix-build $USER/krops.nix --no-out-link --argstr name "$SYSTEM" --argstr target "$HOME/stockholm-build" -A ci) + set -efu + + user=$1 + host=$2 + + result=$(nix-build \ + --argstr name "$host" \ + --argstr target "$HOME"/stockholm-build \ + --attr ci \ + --no-build-output \ + --no-out-link \ + --show-trace \ + "$user"/krops.nix \ + ) + + exec "$result" ''; -- cgit v1.2.3 From df809dca51b2a4037449d626e14a75aa91be7b3a Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 9 Sep 2018 10:23:20 +0200 Subject: buildbot-stockholm: build using the test attribute While at it, fix */krops.nix to actually use the target attribute. --- krebs/2configs/buildbot-stockholm.nix | 2 +- krebs/krops.nix | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) (limited to 'krebs') diff --git a/krebs/2configs/buildbot-stockholm.nix b/krebs/2configs/buildbot-stockholm.nix index add27f395..0aa9288ec 100644 --- a/krebs/2configs/buildbot-stockholm.nix +++ b/krebs/2configs/buildbot-stockholm.nix @@ -24,7 +24,7 @@ let result=$(nix-build \ --argstr name "$host" \ --argstr target "$HOME"/stockholm-build \ - --attr ci \ + --attr test \ --no-build-output \ --no-out-link \ --show-trace \ diff --git a/krebs/krops.nix b/krebs/krops.nix index c71e60571..5378d6fb0 100644 --- a/krebs/krops.nix +++ b/krebs/krops.nix @@ -55,14 +55,9 @@ target = "root@${name}/var/src"; }; - # usage: $(nix-build --no-out-link --argstr name HOSTNAME -A test) - test = pkgs.krops.writeTest "${name}-test" { + # usage: $(nix-build --no-out-link --argstr name HOSTNAME --argstr target PATH -A test) + test = { target }: pkgs.krops.writeTest "${name}-test" { + inherit target; source = source { test = true; }; - target = "${lib.getEnv "HOME"}/tmp/${name}-krops-test-src"; - }; - - ci = pkgs.krops.writeTest "${name}-test" { - source = source { test = true; }; - target = "${lib.getEnv "HOME"}/stockholm-build"; }; } -- cgit v1.2.3 From 1fde1cf78a337d305c9d696cb3d12589fd26ccb3 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 9 Sep 2018 10:54:08 +0200 Subject: mv: RIP --- krebs/3modules/default.nix | 1 - krebs/3modules/mv/default.nix | 40 ---------------------------------------- 2 files changed, 41 deletions(-) delete mode 100644 krebs/3modules/mv/default.nix (limited to 'krebs') diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix index 833349769..6328fe8f1 100644 --- a/krebs/3modules/default.nix +++ b/krebs/3modules/default.nix @@ -109,7 +109,6 @@ let { krebs = import ./krebs { inherit config; }; } { krebs = import ./lass { inherit config; }; } { krebs = import ./makefu { inherit config; }; } - { krebs = import ./mv { inherit config; }; } { krebs = import ./nin { inherit config; }; } { krebs = import ./tv { inherit config; }; } { diff --git a/krebs/3modules/mv/default.nix b/krebs/3modules/mv/default.nix deleted file mode 100644 index c8d138a44..000000000 --- a/krebs/3modules/mv/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ config, ... }: - -with import ; - -{ - hosts = mapAttrs (_: setAttr "owner" config.krebs.users.mv) { - stro = { - ci = true; - cores = 4; - nets = { - retiolum = { - ip4.addr = "10.243.111.111"; - ip6.addr = "42:0:0:0:0:0:111:111"; - aliases = [ - "stro.r" - "cgit.stro.r" - ]; - tinc.pubkey = '' - -----BEGIN RSA PUBLIC KEY----- - MIIBCgKCAQEA0vIzLyoetOyi3R7qOh3gjSvUVjPEdqCvd0NEevDCIhhFy0nIbZ/b - vnuk3EUeTb6e384J8fKB4agig0JeR3JjtDvtjy5g9Cdy2nrU71w8wqU0etmv2PTb - FjbCFfeBXn0N3U7gXwjZGCvjAXa1a4jGb4R2iYBYGG3aY4reCN8B8Ah81h+S0oLg - ZJJfaBmWM5vNRFEI5X4CLaVnwtsoZuXIjYStgNn/9Mg/Y6NQS0H0H+HFeyhigAqG - oYGqNar/2QqPU176V/FwrD30F3qJV1uyzuPta7hmdfOxqYjZ/jqdPSRYtlunYYcq - XbH5oYmzO9NEeVWzjdac/DiV2OP8HufoYwIDAQAB - -----END RSA PUBLIC KEY----- - ''; - }; - }; - ssh.privkey.path = ; - ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+7Qa51l0NSkBiaK2s8vQEoeObV3UPZyEzMxfUK/ZAO root@stro"; - }; - }; - users = { - mv = { - mail = "mv@stro.r"; - pubkey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDfMqkfXsGRaXJ86Pi5svAx4508ij5kc4cMLGwr1CLvFI5G7EHggiHMZYooibmkZimBF1PvLM1lOdoptJ4nSmc3UGuQaeV9BpZ1dNXexc8wOmVPKzAHYZG/2upcV/xVZQ9lk3UOmDym6fDUXThMx4nXdhOjScgWpKp7+0N3JRCf2UHusZjWFGlhE9l4irLFHCwlZeBQ16DNF4fc03vsfZBB1ZrGGZlaVpkcY+FTC3sm8R0iF5QGaq8PgltJoCNnp3L1g3Yn7Elva7kCHjZfJC1pu5icV8vZMNptPn1b10gPsNwb302FCjvZohzRcMo39L2gwdNWQmflYfYk+NPY9EgqkLtSvZJywYu8oTVLeYBAp0ZGzJR4+uIH9at/WQF499HFMxpF4uwYiQweUcPiHrrOqI5zLQoOvqh9Jv0UMsnFynNrszbCTgwzeW8bcvv8ILcjE9of8GXRCrlIMvt7Z9q8xrb5j1RhKscvusyyNOAL+HMZl6jgSxUBDtzRqPZ62QHJsBEBdRXdJRQLGeHNW9kGPrh/tiKGucuT3/HZC+2Rcemxt3RVT60+lHkghrMLi0/VOWBUKL9J94UK5xIE4Gb3RTW9DcNK53U4ql+N4ORSSEuhk3Rqzx3Bzv7AXpLKQCFKdB7tjxzGN7sCQM3PBUUo6Tk0VG2cIKOjzTRnDJlb7Q== mv@stro"; - }; - }; -} -- cgit v1.2.3 From 2dccd7d8d30f7e5dc7eed4e9114f5c14fb255e69 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 12:07:13 +0200 Subject: krebspage: init --- krebs/5pkgs/simple/krebspage/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 krebs/5pkgs/simple/krebspage/default.nix (limited to 'krebs') diff --git a/krebs/5pkgs/simple/krebspage/default.nix b/krebs/5pkgs/simple/krebspage/default.nix new file mode 100644 index 000000000..f9a446f43 --- /dev/null +++ b/krebs/5pkgs/simple/krebspage/default.nix @@ -0,0 +1,6 @@ +{ fetchgit }: +fetchgit { + url = "https://cgit.lassul.us/krebspage"; + rev = "8711780cef004e19a273a5149677869751cd06dc"; + sha256 = "0131vqrkcw140d7j94bvajkhlwi99kpikb8sy2bi1hgh8ziqplsm"; +} -- cgit v1.2.3 From a5e484e98438ebae5af2be9223becf67d1eed17f Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 12:07:52 +0200 Subject: repo-sync: add buildbot-classic --- krebs/2configs/repo-sync.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'krebs') diff --git a/krebs/2configs/repo-sync.nix b/krebs/2configs/repo-sync.nix index 3ca94fc1b..392e6bed3 100644 --- a/krebs/2configs/repo-sync.nix +++ b/krebs/2configs/repo-sync.nix @@ -143,6 +143,7 @@ in { (sync-retiolum { name = "cholerab"; desc = "krebs thesauron & enterprise-patterns"; section = "documentation"; }) + (sync-retiolum { name = "buildbot-classic"; desc = "fork of buildbot"; section = "software"; }) (sync-retiolum { name = "disko"; desc = "take a description of your disk layout and produce a format script"; section = "software"; }) (sync-retiolum { name = "news"; desc = "take a rss feed and a timeout and print it to stdout"; section = "software"; }) (sync-retiolum { name = "krops"; desc = "krebs ops"; section = "software"; }) -- cgit v1.2.3 From 887956bf2b7d9432197e216cd5d1cfa6afaa6185 Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 12:10:03 +0200 Subject: reaktor: add task-done --- krebs/2configs/reaktor-krebs.nix | 1 + krebs/2configs/reaktor-retiolum.nix | 1 + krebs/5pkgs/simple/Reaktor/plugins.nix | 7 +++++++ 3 files changed, 9 insertions(+) (limited to 'krebs') diff --git a/krebs/2configs/reaktor-krebs.nix b/krebs/2configs/reaktor-krebs.nix index 2e63f1385..ba3715161 100644 --- a/krebs/2configs/reaktor-krebs.nix +++ b/krebs/2configs/reaktor-krebs.nix @@ -15,6 +15,7 @@ with import ; sed-plugin task-add task-delete + task-done task-list ] ++ (attrValues (todo "agenda")) diff --git a/krebs/2configs/reaktor-retiolum.nix b/krebs/2configs/reaktor-retiolum.nix index d5f1851e3..90573ca1c 100644 --- a/krebs/2configs/reaktor-retiolum.nix +++ b/krebs/2configs/reaktor-retiolum.nix @@ -12,6 +12,7 @@ with import ; sed-plugin task-add task-delete + task-done task-list ] ++ (attrValues (todo "agenda")) diff --git a/krebs/5pkgs/simple/Reaktor/plugins.nix b/krebs/5pkgs/simple/Reaktor/plugins.nix index c6e601475..50b07391c 100644 --- a/krebs/5pkgs/simple/Reaktor/plugins.nix +++ b/krebs/5pkgs/simple/Reaktor/plugins.nix @@ -171,6 +171,13 @@ rec { ''; }; + task-done = buildSimpleReaktorPlugin "task-done" { + pattern = "^task-done: (?P.*)$$"; + script = pkgs.writeDash "task-done" '' + ${pkgs.taskwarrior}/bin/task rc:${taskrcFile} done "$*" + ''; + }; + todo = name: { add = buildSimpleReaktorPlugin "${name}-add" { pattern = "^${name}-add: (?P.*)$$"; -- cgit v1.2.3 From 511e84d24fd4891515b51a557e8d4f298956f89f Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 12:10:16 +0200 Subject: reaktor task-list: use task minimal --- krebs/5pkgs/simple/Reaktor/plugins.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'krebs') diff --git a/krebs/5pkgs/simple/Reaktor/plugins.nix b/krebs/5pkgs/simple/Reaktor/plugins.nix index 50b07391c..700f9b40d 100644 --- a/krebs/5pkgs/simple/Reaktor/plugins.nix +++ b/krebs/5pkgs/simple/Reaktor/plugins.nix @@ -160,7 +160,7 @@ rec { task-list = buildSimpleReaktorPlugin "task-list" { pattern = "^task-list"; script = pkgs.writeDash "task-list" '' - ${pkgs.taskwarrior}/bin/task rc:${taskrcFile} list + ${pkgs.taskwarrior}/bin/task rc:${taskrcFile} minimal ''; }; -- cgit v1.2.3 From 9bd3dd54c3a119aa1e900e43c08f5d79b1a7dcfc Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 9 Sep 2018 20:01:51 +0200 Subject: add ci module --- krebs/3modules/ci.nix | 162 +++++++++++++++++++++++++++++++++++++++++++++ krebs/3modules/default.nix | 1 + 2 files changed, 163 insertions(+) create mode 100644 krebs/3modules/ci.nix (limited to 'krebs') diff --git a/krebs/3modules/ci.nix b/krebs/3modules/ci.nix new file mode 100644 index 000000000..cf82401d3 --- /dev/null +++ b/krebs/3modules/ci.nix @@ -0,0 +1,162 @@ +{ config, lib, pkgs, ... }: + +with import ; + +let + cfg = config.krebs.ci; + + out = { + options.krebs.ci = api; + config = lib.mkIf cfg.enable imp; + }; + + api = { + enable = mkEnableOption "Enable krebs ci service"; + repos = mkOption { + type = types.attrsOf (types.submodule ({ config, ...}: { + options = { + urls = mkOption { + type = types.listOf types.str; + default = [ "git@localhost:${config._module.args.name}" ]; + }; + }; + })); + }; + }; + + hostname = config.networking.hostName; + getJobs = pkgs.writeDash "get_jobs" '' + nix-build --no-out-link ./ci.nix 2>&1 > /dev/null + nix-instantiate --eval --strict --json ./ci.nix + ''; + + imp = { + krebs.buildbot.master = { + slaves = { + testslave = "lasspass"; + }; + + change_source = mapAttrs' (name: repo: + nameValuePair name (concatMapStrings (url: '' + cs.append( + changes.GitPoller( + "${url}", + workdir='${name}-${elemAt(splitString "." url) 1}', branches=True, + project='${name}', + pollinterval=10 + ) + ) + '') repo.urls) + ) cfg.repos; + + scheduler = mapAttrs' (name: repo: + nameValuePair name '' + sched.append( + schedulers.SingleBranchScheduler( + change_filter=util.ChangeFilter(branch_re=".*"), + treeStableTimer=60, + name="build-all-branches", + builderNames=[ + "${name}", + ] + ) + ) + sched.append( + schedulers.ForceScheduler( + name="${name}", + builderNames=[ + "${name}", + ] + ) + ) + '' + ) cfg.repos; + builder_pre = '' + from buildbot import interfaces + from buildbot.steps.shell import ShellCommand + + class StepToStartMoreSteps(ShellCommand): + def __init__(self, **kwargs): + ShellCommand.__init__(self, **kwargs) + + def addBuildSteps(self, steps_factories): + for sf in steps_factories: + step = interfaces.IBuildStepFactory(sf).buildStep() + step.setBuild(self.build) + step.setBuildSlave(self.build.slavebuilder.slave) + step_status = self.build.build_status.addStepWithName(step.name) + step.setStepStatus(step_status) + self.build.steps.append(step) + + def start(self): + props = self.build.getProperties() + new_steps = json.loads(props.getProperty('steps_json')) + for new_step in new_steps: + self.addBuildSteps([steps.ShellCommand( + name=str(new_step), + command=[ + new_steps[new_step] + ], + timeout=90001, + workdir='build', # TODO figure out why we need this? + )]) + + ShellCommand.start(self) + + ''; + + builder = mapAttrs' (name: repo: + nameValuePair name '' + f_${name} = util.BuildFactory() + f_${name}.addStep(steps.Git( + repourl=util.Property('repository', '${head repo.urls}'), + mode='full', + submodules=True, + )) + + f_${name}.addStep(steps.SetPropertyFromCommand( + env={ + "NIX_REMOTE": "daemon", + "NIX_PATH": "secrets=/var/src/stockholm/null:/var/src", + }, + name="get_steps", + command=["${getJobs}"], + property="steps_json" + )) + f_${name}.addStep(StepToStartMoreSteps(command=["echo"])) # TODO remove dummy command from here + + bu.append( + util.BuilderConfig( + name="${name}", + slavenames=slavenames, + factory=f_${name} + ) + ) + '' + ) cfg.repos; + + enable = true; + web.enable = true; + irc = { + enable = true; + nick = "build|${hostname}"; + server = "irc.r"; + channels = [ "noise" ]; + allowForce = true; + }; + extraConfig = '' + c['buildbotURL'] = "http://build.${hostname}.r/" + ''; + }; + + krebs.buildbot.slave = { + enable = true; + masterhost = "localhost"; + username = "testslave"; + password = "lasspass"; + packages = with pkgs; [ gnumake jq nix populate gnutar lzma gzip ]; + }; + }; + +in out + diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix index 6328fe8f1..82ae3b02e 100644 --- a/krebs/3modules/default.nix +++ b/krebs/3modules/default.nix @@ -13,6 +13,7 @@ let ./buildbot/master.nix ./buildbot/slave.nix ./build.nix + ./ci.nix ./current.nix ./exim.nix ./exim-retiolum.nix -- cgit v1.2.3