-
Notifications
You must be signed in to change notification settings - Fork 150
/
.travis.yml
291 lines (252 loc) · 8.13 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
# Some overall notes on how this works
#
# * We smoke using the system provided latest, and custom built "oddball perls"
# The reason for not having a blanket matrix is to conserve travis resources
# as a full DBIC depchain isn't cheap
#
# * Minimum perl officially supported by DBIC is 5.8.3. This *includes* the
# basic depchain. On failure either attempt to fix it or bring it to the
# attention of ribasushi. *DO NOT* disable 5.8 testing - it is here for a
# reason
#
# * The matrix is built from two main modes - CLEANTEST = [true|false].
# - In the first case we test with minimal deps available, and skip everything
# listed in DBIC::OptDesps. The modules are installed with classic CPAN
# invocations and are *fully tested*. In other words we simulate what would
# happen if a user tried to install on a just-compiled virgin perl
# - Without CLEANTEST we bring the armada of RDBMS and install the maximum
# possible set of deps *without testing them*. This ensures we stay within
# a reasonable build-time and still run as many of our tests as possible
#
# * The perl builds and the DBIC tests run under NUMTHREADS number of threads.
# The testing of dependencies under CLEANTEST runs single-threaded, at least
# until we fix our entire dep-chain to safely pass under -j
#
# * The way .travis.yml is fed to the command controller is idiotic - it
# makes using multiline `bash -c` statements impossible. Therefore to
# aid readability (our travis logic is rather complex), the bulk of
# functionality is moved to scripts. More about the problem (and the
# WONTFIX "explanation") here: https://github.com/travis-ci/travis-ci/issues/497
#
# the entire run times out after 50 minutes, or after 5 minutes without
# console output
#
# Smoke all branches except for blocked* and wip/*
#
# Additionally master does not smoke with bleadperl
# ( implemented in maint/travis-ci_scripts/10_before_install.bash )
#
branches:
except:
- /^wip\//
- /^blocked/
notifications:
irc:
channels:
- "irc.perl.org#dbic-smoke"
template:
- "%{branch}#%{build_number} by %{author}: %{message} (%{build_url})"
on_success: change
on_failure: always
use_notice: true
email:
recipients:
# Temporary - if it proves to be too noisy, we'll shut it off
on_success: change
on_failure: always
# FIXME - This stuff is not yet available for free OSS accounts, sadpanda
# First paragrah on http://about.travis-ci.org/docs/user/caching/
#cache:
# apt: true
# directories:
# - /var/cache/apt/archives
language: perl
perl:
- "5.8"
- "5.20-extras"
env:
- CLEANTEST=false
- CLEANTEST=true NUMTHREADS=1
matrix:
fast_finish: true
include:
# CLEANTEST of minimum supported with non-tracing poisoning
- perl: 5.8.3_nt_mb
env:
- CLEANTEST=true
- DBIC_TRACE_PROFILE=console_monochrome
- BREWVER=5.8.3
- BREWOPTS="-Dusemorebits"
# Full Test of minimum supported without threads with non-tracing poisoning
- perl: 5.8.3_nt
env:
- CLEANTEST=false
- POISON_ENV=true
- BREWVER=5.8.3
# Full Test of minimum supported with threads with non-tracing poisoning
- perl: 5.8.5_thr
env:
- CLEANTEST=false
- POISON_ENV=true
- DBIC_TRACE_PROFILE=console
- BREWVER=5.8.5
- BREWOPTS="-Duseithreads"
# CLEANTEST of solaris-like perl with non-tracing poisoning
- perl: 5.8.4_nt
env:
- CLEANTEST=true
- POISON_ENV=true
- DBIC_TRACE_PROFILE=console
- BREWVER=5.8.4
# CLEANTEST: this particular perl is quite widespread
- perl: 5.8.8_thr_mb
env:
- CLEANTEST=true
- BREWVER=5.8.8
- BREWOPTS="-Duseithreads -Dusemorebits"
# CLEANTEST: this is the perl suse ships
- perl: 5.10.0_thr_dbg
env:
- CLEANTEST=true
- BREWVER=5.10.0
- BREWOPTS="-DDEBUGGING -Duseithreads"
# CLEANTEST: this one is in a number of debian-based LTS (test a sane CPAN.pm)
- perl: 5.14.2_thr_mb
env:
- CLEANTEST=true
- BREWVER=5.14.2
- BREWOPTS="-Duseithreads -Dusemorebits"
###
# some permutations of tracing and envvar poisoning
- perl: 5.12.3_thr
env:
- CLEANTEST=true
- DBIC_TRACE=1
- DBIC_MULTICREATE_DEBUG=1
- DBIC_STORAGE_RETRY_DEBUG=1
- POISON_ENV=true
- DBIC_TRACE_PROFILE=console
- BREWVER=5.12.3
- BREWOPTS="-Duseithreads"
- perl: 5.16.3_thr_mb
env:
- CLEANTEST=false
- DBIC_TRACE=1
- POISON_ENV=true
- BREWVER=5.16.3
- BREWOPTS="-Duseithreads -Dusemorebits"
- perl: 5.18-extras
env:
- CLEANTEST=false
- DBIC_TRACE=1
- POISON_ENV=true
- DBIC_TRACE_PROFILE=console_monochrome
- DBICTEST_VIA_REPLICATED=0
###
# Start of the allow_failures block
# threaded oldest possible with blead CPAN with non-tracing poisoning
- perl: devcpan_5.8.1_thr_mb
env:
- CLEANTEST=true
- DEVREL_DEPS=true
- POISON_ENV=true
- BREWVER=5.8.1
- BREWOPTS="-Duseithreads -Dusemorebits"
# 5.8.4 threaded with blead CPAN with non-tracing poisoning
- perl: devcpan_5.8.4_thr
env:
- CLEANTEST=true
- DEVREL_DEPS=true
- POISON_ENV=true
- BREWVER=5.8.4
- BREWOPTS="-Duseithreads"
# 5.10.0 threaded with blead CPAN
- perl: devcpan_5.10.0_thr_mb
env:
- CLEANTEST=true
- DEVREL_DEPS=true
- BREWVER=5.10.0
- BREWOPTS="-Duseithreads -Dusemorebits"
# 5.12.1 with blead CPAN
- perl: devcpan_5.12.1_thr
env:
- CLEANTEST=true
- DEVREL_DEPS=true
- BREWVER=5.12.1
- BREWOPTS="-Duseithreads"
# bleadperl with stock CPAN, full depchain test with non-tracing poisoning
- perl: bleadperl
env:
- CLEANTEST=true
- POISON_ENV=true
- BREWVER=blead
# bleadperl with blead CPAN with non-tracing poisoning
- perl: devcpan_bleadperl_thr_mb
env:
- CLEANTEST=false
- DEVREL_DEPS=true
- POISON_ENV=true
- BREWVER=blead
- BREWOPTS="-Duseithreads -Dusemorebits"
# which ones of the above can fail
allow_failures:
# these run with various dev snapshots - allowed to fail
- perl: devcpan_5.8.1_thr_mb
- perl: devcpan_5.8.4_thr
- perl: devcpan_5.10.0_thr_mb
- perl: devcpan_5.12.1_thr
- perl: bleadperl
- perl: devcpan_bleadperl_thr_mb
###
### For the following two phases -e is *set*
###
before_install:
# common functions for all run phases below
#
# this is an exporter - sourcing it is crucial
# among other things it also sets -e
#
- source maint/travis-ci_scripts/common.bash
# Sets global envvars, downloads/configures debs based on CLEANTEST
# Sets extra DBICTEST_* envvars
#
# this is an exporter - sourcing it is crucial
#
- source maint/travis-ci_scripts/10_before_install.bash
install:
# Build and switch to a custom perl if requested
# Configure the perl env, preinstall some generic toolchain parts
# Possibly poison the environment
#
# this is an exporter - sourcing it is crucial
#
- source maint/travis-ci_scripts/20_install.bash
###
### From this point on -e is *unset*, rely on travis' error handling
###
- set +e
before_script:
# Preinstall/install deps based on envvars/CLEANTEST
#
# need to invoke the after_failure script manually
# because 'after_failure' runs only after 'script' fails
#
- maint/getstatus maint/travis-ci_scripts/30_before_script.bash || ( maint/travis-ci_scripts/50_after_failure.bash && /bin/false )
script:
# Run actual tests
#
- maint/getstatus maint/travis-ci_scripts/40_script.bash
after_success:
# Check if we can assemble a dist properly if not in CLEANTEST
#
- maint/getstatus maint/travis-ci_scripts/50_after_success.bash
after_failure:
# Final sysinfo printout on fail
#
- maint/getstatus maint/travis-ci_scripts/50_after_failure.bash
after_script:
# No tasks yet
#
#- maint/getstatus maint/travis-ci_scripts/60_after_script.bash