* 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
}