~ubuntu-branches/debian/sid/subversion/sid

« back to all changes in this revision

Viewing changes to tools/buildbot/master/master.cfg

  • Committer: Package Import Robot
  • Author(s): James McCoy
  • Date: 2015-08-07 21:32:47 UTC
  • mfrom: (0.2.15) (4.1.7 experimental)
  • Revision ID: package-import@ubuntu.com-20150807213247-ozyewtmgsr6tkewl
Tags: 1.9.0-1
* Upload to unstable
* New upstream release.
  + Security fixes
    - CVE-2015-3184: Mixed anonymous/authenticated path-based authz with
      httpd 2.4
    - CVE-2015-3187: svn_repos_trace_node_locations() reveals paths hidden
      by authz
* Add >= 2.7 requirement for python-all-dev Build-Depends, needed to run
  tests.
* Remove Build-Conflicts against ruby-test-unit.  (Closes: #791844)
* Remove patches/apache_module_dependency in favor of expressing the
  dependencies in authz_svn.load/dav_svn.load.
* Build-Depend on apache2-dev (>= 2.4.16) to ensure ap_some_authn_required()
  is available when building mod_authz_svn and Depend on apache2-bin (>=
  2.4.16) for runtime support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- python -*-
2
 
#
3
 
#
4
 
# Licensed to the Apache Software Foundation (ASF) under one
5
 
# or more contributor license agreements.  See the NOTICE file
6
 
# distributed with this work for additional information
7
 
# regarding copyright ownership.  The ASF licenses this file
8
 
# to you under the Apache License, Version 2.0 (the
9
 
# "License"); you may not use this file except in compliance
10
 
# with the License.  You may obtain a copy of the License at
11
 
#
12
 
#   http://www.apache.org/licenses/LICENSE-2.0
13
 
#
14
 
# Unless required by applicable law or agreed to in writing,
15
 
# software distributed under the License is distributed on an
16
 
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
 
# KIND, either express or implied.  See the License for the
18
 
# specific language governing permissions and limitations
19
 
# under the License.
20
 
#
21
 
#
22
 
 
23
 
import os, os.path, re
24
 
 
25
 
from buildbot.scheduler import Scheduler
26
 
from buildbot.process import factory
27
 
from buildbot.steps import source, shell
28
 
from buildbot.status.html import WebStatus
29
 
from buildbot.scheduler import AnyBranchScheduler
30
 
#from buildbot.twcompat import implements
31
 
from buildbot.scheduler import Try_Userpass
32
 
from buildbot.scheduler import Nightly
33
 
from buildbot.changes.svnpoller import SVNPoller, split_file_branches
34
 
from buildbot.buildslave import BuildSlave
35
 
 
36
 
#import TigrisMailSource
37
 
import SVNMailNotifier
38
 
from Feeder import WebStatusWithFeeds 
39
 
import private
40
 
 
41
 
REPO="http://svn.apache.org/repos/asf/subversion/"
42
 
 
43
 
s = factory.s
44
 
 
45
 
# This is the dictionary that the buildmaster pays attention to. We also use
46
 
# a shorter alias to save typing.
47
 
c = BuildmasterConfig = {}
48
 
 
49
 
# slaves
50
 
c['slaves'] = [BuildSlave("fc1-gcc3.3.2-ia32", private.slavePwd),
51
 
             BuildSlave("osx10.4-gcc4.0.1-ia32", private.slavePwd),
52
 
             BuildSlave("xp-vs2003-ia32", private.slavePwd),
53
 
             BuildSlave("dlr-fc3", private.slavePwd),
54
 
             BuildSlave("eh-debsarge1", private.slavePwd),
55
 
             BuildSlave("x64-ubuntu", private.hwrightPwd),        
56
 
             BuildSlave("x64-centos", private.wandPwd),
57
 
]
58
 
 
59
 
# sources
60
 
c['change_source'] = SVNPoller(REPO,
61
 
                               split_file=split_file_branches,
62
 
                               svnbin=private.svnbin,
63
 
                               pollinterval=300)
64
 
 
65
 
excludes = ["COMMITTERS", "STATUS", "CHANGES", "README", "INSTALL", "COPYING", "HACKING", "TRANSLATING", "BUGS", "www", "notes", "packages", "subversion/LICENSE", "subversion/po", "doc", "contrib", "tools", "dist.sh"]
66
 
 
67
 
# function checks if this revision is interesting enough to trigger the builds.
68
 
def isImportant(change):
69
 
    if not excludes:
70
 
        return True
71
 
    
72
 
    for file in change.files:
73
 
        triggerBuild = True     
74
 
        for pattern in excludes:
75
 
            match = re.match(pattern, file)
76
 
            if match:
77
 
                triggerBuild = False
78
 
                break
79
 
        if triggerBuild:
80
 
            return True
81
 
 
82
 
# schedulers
83
 
bs1 = AnyBranchScheduler("main",
84
 
                        [None, "branches/1.3.x", "branches/1.4.x", "branches/1.5.x", 
85
 
                               "branches/1.6.x"],
86
 
                        5*60, ["x86-macosx-gnu shared",
87
 
                               "debian-x86_64-32 shared gcc",
88
 
                               "x64-ubuntu gcc",
89
 
                               "x64-centos gcc",
90
 
                               ],
91
 
                        fileIsImportant=isImportant)
92
 
 
93
 
ps1 = Nightly('daily-2pm-cet', ['x86-macosx-gnu shared daily ra_serf'], hour=14, minute=0)
94
 
 
95
 
ts = Try_Userpass("try", ["x86-macosx-gnu shared", "debian-x86_64-32 shared gcc"],
96
 
                 port=private.tryPort, userpass=[(private.tryUser,private.tryPwd)] )
97
 
c['schedulers'] = [bs1, ps1, ts]
98
 
 
99
 
# steps and builders
100
 
 
101
 
# define default set of steps, all under masters control.
102
 
defSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], timeout=3600),
103
 
         source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
104
 
         shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
105
 
         shell.ShellCommand(name="Test fsfs+ra_neon", command=["../svncheck.sh", "fsfs", "ra_neon"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
106
 
        ]
107
 
 
108
 
defFact = factory.BuildFactory(defSteps)
109
 
 
110
 
# define Windows custom steps
111
 
winSteps = [source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
112
 
            shell.ShellCommand(name="Build", command=["..\svnbuild.bat"], timeout=3600, haltOnFailure=True),
113
 
            shell.ShellCommand(name="Test fsfs+ra_local", command=["..\svncheck.bat","fsfs","ra_local"], timeout=3600, flunkOnFailure=True),
114
 
            shell.ShellCommand(name="Test fsfs+ra_dav", command=["..\svncheck.bat","fsfs","ra_dav"], timeout=3600, flunkOnFailure=True),
115
 
            shell.ShellCommand(name="Test fsfs+ra_svn", command=["..\svncheck.bat","fsfs","ra_svn"], timeout=3600, flunkOnFailure=True),
116
 
            shell.ShellCommand(name="Cleanup", command=["..\svnclean.bat"], timeout=3600),
117
 
         ]
118
 
winFact = factory.BuildFactory(winSteps)
119
 
 
120
 
# define Windows 6 way steps
121
 
win6wSteps = [source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
122
 
            shell.ShellCommand(name="Cleanup", command=["..\svnclean.bat"], timeout=3600),
123
 
            shell.ShellCommand(name="Build", command=["..\svnbuild.bat", "%(branch)"], timeout=3600, haltOnFailure=True),
124
 
            shell.ShellCommand(name="Test fsfs+ra_local", command=["..\svncheck.bat","fsfs","ra_local"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
125
 
         ]
126
 
win6wFact = factory.BuildFactory(win6wSteps)
127
 
 
128
 
# define set of steps for eh-x84_64-32, clean step comes first.
129
 
ehSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], workdir='', timeout=3600),
130
 
         source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
131
 
         shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
132
 
         shell.ShellCommand(name="Test fsfs+ra_svn", command=["../svncheck.sh","fsfs","ra_svn"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
133
 
        ]
134
 
ehFact = factory.BuildFactory(ehSteps)
135
 
 
136
 
# nightly build ra_serf
137
 
serfSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], timeout=3600),
138
 
             source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
139
 
             shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
140
 
             shell.ShellCommand(name="Test fsfs+ra_serf", command=["../svncheck.sh", "fsfs", "ra_serf"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
141
 
            ]
142
 
serfFact = factory.BuildFactory(serfSteps)
143
 
 
144
 
# define set of steps for x64-ubuntu, clean step comes first.
145
 
x64ubSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], workdir='', timeout=3600),
146
 
         source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
147
 
         shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
148
 
         shell.ShellCommand(name="Test fsfs+ra_local", command=["../svncheck.sh","fsfs","ra_local"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=False),
149
 
         shell.ShellCommand(name="Test bindings", command=["../svncheck-bindings.sh","fsfs","ra_local"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
150
 
        ]
151
 
x64ubFact = factory.BuildFactory(x64ubSteps)
152
 
 
153
 
x64coSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], timeout=3600),
154
 
         source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
155
 
         shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
156
 
         shell.ShellCommand(name="Test fsfs+ra_local", command=["../svncheck.sh", "fsfs", "ra_neon"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
157
 
         shell.ShellCommand(name="Test bindings", command=["../svncheck-bindings.sh","fsfs","ra_neon"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
158
 
        ]
159
 
x64coFact = factory.BuildFactory(x64coSteps)
160
 
 
161
 
 
162
 
c['builders'] = [
163
 
     {'name': "x86-macosx-gnu shared",
164
 
      'slavename': "osx10.4-gcc4.0.1-ia32",
165
 
      'builddir': "osx10.4-gcc4.0.1-ia32",
166
 
      'factory': defFact,
167
 
      'category': "prod",
168
 
      },
169
 
      {'name': "debian-x86_64-32 shared gcc",
170
 
       'slavename': "eh-debsarge1",
171
 
       'builddir': "eh-debsarge1",
172
 
       'factory': ehFact,
173
 
       'category': "prod",
174
 
      },
175
 
     {'name': "x86-macosx-gnu shared daily ra_serf",
176
 
      'slavename': "osx10.4-gcc4.0.1-ia32",
177
 
      'builddir': "osx10.4-gcc4.0.1-ia32-serf",
178
 
      'factory': serfFact,
179
 
      'category': "prod",
180
 
      },
181
 
     {'name': "x64-ubuntu gcc",
182
 
      'slavename': "x64-ubuntu",
183
 
      'builddir': "x64-ubuntu",
184
 
      'factory': x64ubFact,
185
 
      'category': "prod",
186
 
      },
187
 
     {'name': "x64-centos gcc",
188
 
      'slavename': "x64-centos",
189
 
      'builddir': "x64-centos",
190
 
      'factory': x64coFact,
191
 
      'category': "prod",
192
 
      },
193
 
]
194
 
 
195
 
# 'slavePortnum' defines the TCP port to listen on. This must match the value
196
 
# configured into the buildslaves (with their --master option)
197
 
 
198
 
c['slavePortnum'] = private.slavePortnum
199
 
 
200
 
# show webpage
201
 
c['status'] = []
202
 
c['status'].append(WebStatusWithFeeds(http_port="tcp:"+str(private.htmlPort)+":interface=127.0.0.1", allowForce=True))
203
 
 
204
 
# send emails
205
 
from buildbot.status import mail
206
 
mailbody = 'Full details are available at: \n%(buildurl)s\n\n'\
207
 
           'Author list: %(blamelist)s\n\n'\
208
 
           'Build Slave: %(slave)s\n\n\n'\
209
 
           'Subversion Buildbot\n'\
210
 
           '%(buildboturl)s\n\n\n'\
211
 
           'Last 100 lines of the build log (step: %(laststep)s ):\n\n %(lastlog)s'
212
 
 
213
 
           
214
 
c['status'].append(SVNMailNotifier.SVNMailNotifier(
215
 
                                     fromaddr="buildbot@mobsol.be",
216
 
                                     extraRecipients=["notifications@subversion.apache.org"],
217
 
                                     sendToInterestedUsers=False,
218
 
                                     subject="svn %(branch)s r%(revision)s: %(result)s (%(builder)s)",
219
 
                                     body=mailbody,
220
 
                                     replytoaddr="dev@subversion.apache.org",
221
 
                                     categories=["prod"],
222
 
                                     relayhost=private.smtp))
223
 
 
224
 
# from buildbot.status import words
225
 
# c['status'].append(words.IRC(host="irc.example.com", nick="bb",
226
 
#                              channels=["#example"]))
227
 
 
228
 
 
229
 
# if you set 'debugPassword', then you can connect to the buildmaster with
230
 
# the diagnostic tool in contrib/debugclient.py . From this tool, you can
231
 
# manually force builds and inject changes, which may be useful for testing
232
 
# your buildmaster without actually commiting changes to your repository (or
233
 
# before you have a functioning 'sources' set up). The debug tool uses the
234
 
# same port number as the slaves do: 'slavePortnum'.
235
 
 
236
 
#c['debugPassword'] = "debugpassword"
237
 
 
238
 
# if you set 'manhole', you can telnet into the buildmaster and get an
239
 
# interactive python shell, which may be useful for debugging buildbot
240
 
# internals. It is probably only useful for buildbot developers.
241
 
# from buildbot.master import Manhole
242
 
#c['manhole'] = Manhole(9999, "admin", "password")
243
 
 
244
 
# the 'projectName' string will be used to describe the project that this
245
 
# buildbot is working on. For example, it is used as the title of the
246
 
# waterfall HTML page. The 'projectURL' string will be used to provide a link
247
 
# from buildbot HTML pages to your project's home page.
248
 
 
249
 
c['projectName'] = "Subversion"
250
 
c['projectURL'] = "http://subversion.apache.org/"
251
 
 
252
 
# the 'buildbotURL' string should point to the location where the buildbot's
253
 
# internal web server (usually the html.Waterfall page) is visible. This
254
 
# typically uses the port number set in the Waterfall 'status' entry, but
255
 
# with an externally-visible host name which the buildbot cannot figure out
256
 
# without some help.
257
 
 
258
 
c['buildbotURL'] = "http://crest.ics.uci.edu/buildbot/"