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