@cryptotaxi247 / infra-1 / commits / 67767873

* Upstart jobs for generating the channels.

svn path=/configurations/trunk/tud/; revision=33600

Eelco Dolstra committed Apr 4, 2012 at 23:00 UTC 6776787309e0ec56f977851183e10f7f9a9814e8
2 files changed +29 -143
hydra-mirror.nix deleted
-124
@@ -1,124 +0,0 @@
1 -{ config, pkgs, ... }:
2 -
3 -with pkgs.lib;
4 -
5 -let
6 -
7 - cfg = config.services.hydraChannelMirror;
8 -
9 - mirrorChannel = pkgs.fetchsvn {
10 - url = https://nixos.org/repos/nix/release/trunk/channels/mirror-channel.pl;
11 - rev = 30545;
12 - sha256 = "0i75abvy989xq25r452clzg40pxl1hra94hkvknwn71l7nk2gyic";
13 - };
14 -
15 - cronjob = jobset:
16 - "${cfg.period} ${cfg.user}"
17 - + optionalString cfg.enableBinaryPatches " ENABLE_PATCHES=1"
18 - + " perl -I${config.environment.nix}/lib/perl5/site_perl -I${pkgs.perlPackages.DBI}/lib/perl5/site_perl -I${pkgs.perlPackages.DBDSQLite}/lib/perl5/site_perl ${mirrorChannel}"
19 - + " ${cfg.hydraURL}/jobset/${jobset.project}/${jobset.jobset}/channel/latest"
20 - + " ${cfg.dataDir}/${jobset.project}/channels/${jobset.name}"
21 - + " ${cfg.dataDir}/nars"
22 - + " ${cfg.mirrorURL}/nars"
23 - + " ${cfg.dataDir}/patches"
24 - + " ${cfg.mirrorURL}/patches"
25 - + " ${if jobset.nixexprs == "" then "" else "${cfg.hydraURL}/job/${jobset.project}/${jobset.jobset}/${jobset.nixexprs}/latest/download-by-type/file/source-dist"}"
26 - + " >> ${cfg.dataDir}/logs/${jobset.name}.log 2>&1\n";
27 -
28 -in
29 -
30 -{
31 - options = {
32 -
33 - services.hydraChannelMirror = {
34 -
35 - enable = mkOption {
36 - default = false;
37 - description = ''
38 - Whether to enable Hydra channel mirroring.
39 - '';
40 - };
41 -
42 - period = mkOption {
43 - default = "15 * * * *";
44 - description = ''
45 - This option defines (in the format used by cron) when the
46 - mirroring should occur.
47 - '';
48 - };
49 -
50 - user = mkOption {
51 - default = "hydra-mirror";
52 - description = ''
53 - User running the Hydra mirror script.
54 - '';
55 - };
56 -
57 - jobsets = mkOption {
58 - default = [ { name = "nixpkgs-unstable"; project = "nixpkgs"; jobset = "trunk"; nixexprs = "tarball"; } ];
59 - description = ''
60 - List of jobsets to mirror.
61 - '';
62 - };
63 -
64 - hydraURL = mkOption {
65 - default = "http://hydra.nixos.org";
66 - description = ''
67 - Location (URL) of Hydra instance
68 - '';
69 - };
70 -
71 - mirrorURL = mkOption {
72 - default = "http://nixos.org/releases";
73 - description = ''
74 - Location (URL) of Hydra mirror
75 - '';
76 - };
77 -
78 - dataDir = mkOption {
79 - default = "/data/hydra-mirror";
80 - description = ''
81 - Location of Hydra mirror data
82 - '';
83 - };
84 -
85 - enableBinaryPatches = mkOption {
86 - default = false;
87 - description = ''
88 - Whether to enable generating binary patches for the mirrored channels.
89 - '';
90 - };
91 - };
92 -
93 - };
94 -
95 - config = mkIf cfg.enable {
96 -
97 - users.extraUsers = singleton
98 - { name = cfg.user; description = "Hydra mirror"; };
99 -
100 - services.cron.systemCronJobs = map cronjob cfg.jobsets;
101 -
102 - system.activationScripts.hydraChannelMirror = stringAfter [ "stdio" "users" ]
103 - ''
104 - mkdir -m 0755 -p ${cfg.dataDir}
105 - chown ${cfg.user} ${cfg.dataDir}
106 -
107 - mkdir -m 0755 -p ${cfg.dataDir}/nars
108 - chown ${cfg.user} ${cfg.dataDir}/nars
109 -
110 - mkdir -m 0755 -p ${cfg.dataDir}/patches
111 - chown ${cfg.user} ${cfg.dataDir}/patches
112 -
113 - mkdir -m 0755 -p ${cfg.dataDir}/logs
114 - chown ${cfg.user} ${cfg.dataDir}/logs
115 -
116 - ${concatMapStrings (j : ''
117 - mkdir -m 0755 -p ${cfg.dataDir}/${j.project}/channels/${j.name}
118 - chown ${cfg.user} ${cfg.dataDir}/${j.project}/channels/${j.name}
119 - '') cfg.jobsets}
120 - '';
121 -
122 - };
123 -
124 -}
lucifer.nix
+29 -19
@@ -1,7 +1,7 @@
1 { config, pkgs, ... }:
2
3 {
4 - require = [ ./common.nix ./hydra-module.nix ./hydra-mirror.nix ];
4 + require = [ ./common.nix ./hydra-module.nix ];
5
6 nixpkgs.system = "x86_64-linux";
7
@@ -59,22 +59,6 @@
59
60 nixpkgs.config.subversion.pythonBindings = true;
61
62 - services.hydraChannelMirror.enable = true;
63 - services.hydraChannelMirror.enableBinaryPatches = true;
64 - services.hydraChannelMirror.period = "0-59/15 * * * *";
65 - services.hydraChannelMirror.dataDir = "/data/releases";
66 -
67 - /*
68 - services.tomcat = {
69 - enable = true;
70 - baseDir = "/data/tomcat";
71 - javaOpts =
72 - "-Dshare.dir=/nix/var/nix/profiles/default/share -Xms350m -Xss8m -Xmx1024m -XX:MaxPermSize=512M -XX:PermSize=512M -XX:-UseGCOverheadLimit "
73 - + "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=localhost "
74 - + "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/tomcat/logs/java_pid<pid>.hprof";
75 - };
76 - */
77 -
62 services.cron.systemCronJobs =
63 let
64 # Run the garbage collector on ‘machine’ to ensure that at least
@@ -83,8 +67,7 @@
67 "15 03 * * * root ssh -x -i /root/.ssh/id_buildfarm ${machine} " +
68 ''nix-store --gc --max-freed '$((${toString gbFree} * 1024**3 - 1024 * $(${df} -P -k /nix/store | tail -n 1 | awk "{ print \$4 }")))' > "/var/log/gc-${machine}.log" 2>&1'';
69 in
86 - [ "*/5 * * * * hydra-mirror flock -x /data/releases/.lock -c /home/hydra-mirror/release/mirror/mirror-nixos-isos.sh >> /home/hydra-mirror/nixos-mirror.log 2>&1"
87 - (gcRemote { machine = "nix@butters"; gbFree = 50; })
70 + [ (gcRemote { machine = "nix@butters"; gbFree = 50; })
71 (gcRemote { machine = "nix@garrison"; })
72 (gcRemote { machine = "nix@demon"; })
73 (gcRemote { machine = "nix@beastie"; })
@@ -135,4 +118,31 @@
118 '';
119 };
120
121 + jobs."mirror-nixpkgs" =
122 + { startOn = "started networking";
123 + path = [ pkgs.su ];
124 + script =
125 + ''
126 + su - hydra-mirror -c 'exec >> nixpkgs-mirror.log 2>&1; cd release/channels; while true; do date; ./mirror-nixpkgs.sh; sleep 300; done'
127 + '';
128 + };
129 +
130 + jobs."generate-nixpkgs-patches" =
131 + { startOn = "started networking";
132 + path = [ pkgs.su ];
133 + script =
134 + ''
135 + su - hydra-mirror -c 'exec >> nixpkgs-patches.log 2>&1; cd release/channels; while true; do date; ./generate-linear-patch-sequence.sh; sleep 300; done'
136 + '';
137 + };
138 +
139 + jobs."mirror-nixos" =
140 + { startOn = "started networking";
141 + path = [ pkgs.su ];
142 + script =
143 + ''
144 + su - hydra-mirror -c 'exec >> nixos-mirror.log 2>&1; cd release/channels; while true; do date; ./mirror-nixos-isos.sh; sleep 300; done'
145 + '';
146 + };
147 +
148 }