8255bb34ffeb08f7fb54e079a813d045256525f9
[buildfarm-client.git] / build-farm.conf.template
1
2 # -*-perl-*- hey - emacs - this is a perl file
3
4 =comment
5
6 Copyright (c) 2003-2010, Andrew Dunstan
7
8 See accompanying License file for license details
9
10 =cut 
11
12 package EximBuild;
13
14 use strict;
15
16 use vars qw(%conf);
17
18 # use vars qw($VERSION); $VERSION = 'REL_0.1';
19
20 my $branch;
21 {
22     no warnings qw(once);
23     $branch = $main::branch;
24 }
25
26 # This template assumes that the user running the buildfarm process is "farm"
27 %conf =(
28     scm => 'git',
29     # default is github mirror of Exim
30     scmrepo => 'https://github.com/Exim/exim.git',
31     # Wishlist for future, track and build from multiple repos.
32     # Doesn't do anything yet.
33     repos => {
34       'exim' => 'git://www.mrball.net/exim/exim.git',
35       'exim.jgh' => 'git://www.mrball.net/exim/exim-jgh.git',
36       'exim.pdp' => 'git://www.mrball.net/exim/exim-pdp.git',
37       'exim.tlyons' => 'git://www.mrball.net/exim/exim-tlyons.git',
38     },
39     # webref for diffs on server - use default for community
40     scm_url => undef,
41     # for --reference on git repo
42     # git_reference => undef,
43     # or gmake if required. can include path if necessary.
44     make => 'make',
45     # 1 = any make will do, 0 = require GNU (default)
46     non_gnu_make => 0,
47     # >1 for parallel "make" and "make check" steps
48     make_jobs => undef,
49     # default is "tar -z -cf runlogs.tgz *.log"
50     # replacement must have the same effect
51     # must be absolute, can be either Unix or Windows style for MSVC
52     tar_log_cmd => undef,
53     # this directory must exist before anything will work
54     build_root => '/home/farm/buildfarm',
55     # set true to do vpath builds
56     use_vpath => undef,
57
58     keep_error_builds => 0,
59     # Linux style, use "*.core" for BSD
60     core_file_glob => "core*",
61
62     # build process will connect to this URL to upload results
63     target => "http://eximbuild.mrball.net/cgi-bin/eximstatus.pl",
64     # update_personality uses this when you want to update your
65     # machine's info (OS, version, compiler, version)
66     upgrade_target => "http://eximbuild.mrball.net/cgi-bin/upgrade.pl",
67
68     # Your host alias and password in the BuildFarm
69     animal => "alias_assigned_by_build_team",
70     secret => "secret_assigned_by_build_team",
71
72     # if force_every is a scalar it will be used on all branches, like this
73     # for legacy reasons:
74     # force_every => 336 , # max hours between builds, undef or 0 = unforced
75     # we now prefer it to be a hash with branch names as the keys, like this
76     #
77     # this setting should be kept conservatively high, or not used at all  -
78     # for the most part it's best to let the script decide if something
79     # has changed that requires a new run for the branch.
80     #
81     # an entry with a name of 'default' matches any branch not named
82     force_every => {
83         HEAD => 24*7,
84         # default => 168,
85     },
86
87     # alerts are triggered if the server doesn't see a build on a branch after
88     # this many hours, and then sent out every so often,
89     alerts => {
90         #HEAD          => { alert_after => 72,  alert_every => 24 },
91     },
92
93     print_success => undef,
94
95     # include / exclude pattern for files whose trigger a build
96     # if both are specified then they are both applied as filters
97     # undef means don't ignore anything.
98     # exclude qr[/(doc|po)/] to ignore changes to docs and po files (recommended)
99     # undef means null filter.
100     trigger_exclude => qr[/(doc|po)/],
101     trigger_include => undef,
102
103     # settings for mail notices - default to notifying nobody
104     # these lists contain addresses to be notified
105     # must be complete email addresses, as the email is sent from the server
106     mail_events =>{
107         all => [], # unconditional
108         fail => [], # if this build fails
109         change => [], # if this build causes a state change
110         green => [], # if this build causes a state change to/from OK
111     },
112
113     # env settings to apply within build/report process
114     # these settings will be seen by all the processes, including the
115     # configure process.
116     build_env =>{
117         # use a dedicated cache for the build farm. this should give us
118         # very high hit rates and slightly faster cache searching.
119         CCACHE_DIR => "/home/farm/buildfarm/ccache/$branch",
120
121         ### set this if you need a proxy setting for the
122         # outbound web transaction that reports the results
123         # BF_PROXY => 'http://my.proxy.server:portnum/',
124     },
125
126     # Environment settings on the make commandline.
127     # These cause full compile output and don't strip the binary.
128     make_args => q/FULLECHO='' STRIP_COMMAND=''/,
129
130     # Settings to add to Local/Makefile. These will set or override
131     # previous definitions of variables.  Example:
132     # LDFLAGS => '-Wall' will create LDFLAGS = '-Wall'
133     makefile_set =>{
134         # comment out if not using ccache
135         CC => 'ccache gcc',
136         # Other examples. Could use makefile_regex instead.
137         #SUPPORT_TLS => 'yes',
138         #TLS_LIBS => '-lssl -lcrypto',
139     },
140     # Settings to add to Local/Makefile. These will add to variables that
141     # are already defined earlier in the Makefile.  Example:
142     # LDFLAGS => '-Wall'  will create  LDFLAGS+='-Wall'
143     makefile_add =>{
144         # Show all warnings and errors
145         CFLAGS => '-Wall -Werror=format-security',
146         # Or enable debugging flags
147         #CFLAGS => '-g -Wall',
148         #LFLAGS => '-g',
149     },
150
151     # Another way to enable things in the Local/Makefile.
152     # Use a simple regex to change a default to what you want.
153     makefile_regex =>[
154         #q(s/^# EXPERIMENTAL_PRDR.*/EXPERIMENTAL_PRDR=yes/),
155     ],
156
157     # The user compiled as the master exim username.
158     # Requirement: The buildfarm user that runs the build farm script *MUST* have
159     # the group of the exim user as a secondary group. Example:
160     # user=>farm, group=>farm, secondary_groups=>exim
161     # user=>exim, group=>exim
162     master_exim_user => "exim",
163
164     # Range of tests to run if enable make_test in optional steps.
165     #range_num_tests => '1 999',
166     range_num_tests => '1 999',
167     # Hardcode some valid version for use during make test
168     exim_test_version => '4.80',
169
170     optional_steps =>{
171         # which optional steps to run and when to run them
172         # 'make-doc' => {min_hours_since => 24*7},
173         test  => {min_hours_since => 24*7},
174     },
175
176     # locales to test
177     locales => [qw( C )],
178
179     # Placemarker for auto-generated build features
180     config_opts =>[
181         qw()
182     ],
183
184     # per-branch contents of extra config for check stages.
185     # each branch has an array of setting lines (no \n required)
186     # a DEFAULT entry is used for all branches, before any
187     # branch-specific settings.
188     extra_config =>{
189         DEFAULT => [
190             #q(log_line_prefix = '[%c:%l] '),
191             #"log_connections = 'true'",
192             #"log_disconnections = 'true'",
193             #"log_statement = 'all'",
194             #"fsync = off"
195         ],
196     },
197
198     # Unused
199     # port number actually used will be based on this param and the branch,
200     # so we ensure they don't collide
201     base_port => 5678,
202
203     # Unused
204     modules => [qw(TestUpgrade)],
205
206 );
207
208 if ($branch eq 'global')
209 {
210
211     $conf{branches_to_build} = 'ALL';
212
213     # or 'HEAD_PLUS_LATEST' or 'HEAD_PLUS_LATEST2'
214     # or [qw( HEAD RELx_y_STABLE etc )]
215
216 }
217
218 ##################################
219 #
220 # Can use perl below for
221 # per branch processing.
222 #
223 ##################################
224
225 1;