Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 1 | # -*- python -*- |
| 2 | # ex: set syntax=python: |
| 3 | |
| 4 | from buildbot.plugins import * |
| 5 | from buildbot.plugins import buildslave, util |
| 6 | |
| 7 | # This is a sample buildmaster config file. It must be installed as |
| 8 | # 'master.cfg' in your buildmaster's base directory. |
| 9 | |
| 10 | # This is the dictionary that the buildmaster pays attention to. We also use |
| 11 | # a shorter alias to save typing. |
| 12 | c = BuildmasterConfig = {} |
| 13 | |
| 14 | quaggagit = 'git://git.sv.gnu.org/quagga.git' |
| 15 | |
| 16 | # password defs |
| 17 | execfile("pass.cfg") |
| 18 | |
| 19 | workers = { |
| 20 | "fedora-24": { |
| 21 | "os": "Fedora", |
| 22 | "version": "24", |
| 23 | "vm": False, |
| 24 | "pkg": "rpm", |
| 25 | }, |
| 26 | "centos-7": { |
| 27 | "os": "CentOS", |
| 28 | "version": "7", |
| 29 | "vm": False, |
| 30 | "pkg": "rpm", |
| 31 | }, |
| 32 | "debian-8": { |
| 33 | "os": "Debian", |
| 34 | "version": "8", |
| 35 | "vm": True, |
| 36 | "pkg": "dpkg", |
| 37 | "latent": True, |
| 38 | "hd_image": "/var/lib/libvirt/images/debian8.qcow2", |
| 39 | }, |
| 40 | "debian-9": { |
| 41 | "os": "Debian", |
| 42 | "version": "9", |
| 43 | "vm": True, |
| 44 | "pkg": "dpkg", |
| 45 | "latent": True, |
| 46 | "hd_image": "/var/lib/libvirt/images/debian9.qcow2", |
| 47 | }, |
| 48 | "freebsd-10": { |
| 49 | "os": "FreeBSD", |
| 50 | "version": "10", |
| 51 | "vm": True, |
| 52 | "pkg": "", |
| 53 | "latent": True, |
| 54 | "hd_image": "/var/lib/libvirt/images/freebsd103.qcow2", |
| 55 | }, |
| 56 | "freebsd-11": { |
| 57 | "os": "FreeBSD", |
| 58 | "version": "11", |
| 59 | "vm": True, |
| 60 | "pkg": "", |
| 61 | "latent": True, |
| 62 | "hd_image": "/var/lib/libvirt/images/freebsd110.qcow2", |
| 63 | }, |
| 64 | } |
| 65 | |
| 66 | # ensure "latent" is set to false, where not set. |
| 67 | # add in the passwords |
| 68 | for kw in workers: |
| 69 | w = workers[kw] |
| 70 | w["bot"] = "buildbot-" + kw |
| 71 | if "latent" not in w: |
| 72 | w["latent"] = False |
| 73 | w["pass"] = workers_pass[kw] |
| 74 | |
| 75 | analyses_builders = [ "clang-analyzer" ] |
| 76 | |
| 77 | # default Libvirt session |
| 78 | for w in (w for w in workers.values () if ("latent" in w) |
| 79 | and ("session" not in w)): |
| 80 | w["session"] = 'qemu+ssh://buildbot@sagan.jakma.org/system' |
| 81 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 82 | osbuilders = ["build-" + kw for kw in workers] |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 83 | osfastbuilders = ["build-" + kw for kw in workers if workers[kw]["vm"] == False] |
| 84 | osslowbuilders = ["build-" + kw for kw in workers if workers[kw]["vm"] == True] |
| 85 | |
| 86 | rpmbuilders = ["rpm-" + kw for kw in workers if workers[kw]["pkg"] == "rpm"] |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 87 | |
| 88 | allbuilders = [] |
| 89 | allbuilders += osbuilders |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 90 | allbuilders += rpmbuilders |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 91 | allbuilders += analyses_builders |
| 92 | allbuilders += ["commit-builder"] |
| 93 | allbuilders += ["build-distcheck"] |
| 94 | |
| 95 | # Force merging of requests. |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 96 | # c['mergeRequests'] = lambda *args, **kwargs: True |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 97 | |
| 98 | ####### BUILDSLAVES |
| 99 | c['slaves'] = [] |
| 100 | |
| 101 | # The 'slaves' list defines the set of recognized buildslaves. Each element is |
| 102 | # a BuildSlave object, specifying a unique slave name and password. The same |
| 103 | # slave name and password must be configured on the slave. |
| 104 | |
| 105 | for w in (w for w in workers.values() if ("latent" not in w) |
| 106 | or (w["latent"] == False)): |
| 107 | c['slaves'].append(buildslave.BuildSlave(w["bot"], w["pass"])) |
| 108 | |
| 109 | for w in (w for w in workers.values() |
| 110 | if ("latent" in w) |
| 111 | and w["latent"] |
| 112 | and "hd_image" in w): |
| 113 | c['slaves'].append(buildslave.LibVirtSlave( |
| 114 | w["bot"], |
| 115 | w["pass"], |
| 116 | util.Connection(w["session"]), |
| 117 | w["hd_image"], |
| 118 | )) |
| 119 | |
| 120 | # 'protocols' contains information about protocols which master will use for |
| 121 | # communicating with slaves. |
| 122 | # You must define at least 'port' option that slaves could connect to your master |
| 123 | # with this protocol. |
| 124 | # 'port' must match the value configured into the buildslaves (with their |
| 125 | # --master option) |
| 126 | c['protocols'] = {'pb': {'port': 9989}} |
| 127 | |
| 128 | ####### CHANGESOURCES |
| 129 | |
| 130 | # the 'change_source' setting tells the buildmaster how it should find out |
| 131 | # about source code changes. Here we point to the buildbot clone of pyflakes. |
| 132 | |
| 133 | c['change_source'] = [] |
| 134 | c['change_source'].append(changes.GitPoller( |
| 135 | quaggagit, |
| 136 | workdir='gitpoller-workdir', |
| 137 | branches=['master','volatile/next'], |
| 138 | pollinterval=300)) |
| 139 | |
| 140 | ####### SCHEDULERS |
| 141 | |
| 142 | # Configure the Schedulers, which decide how to react to incoming changes. |
| 143 | |
| 144 | # We want a first line of 'quick' builds, which then trigger further builds. |
| 145 | # |
| 146 | # A control-flow builder, "commit-builder", used to sequence the 'real' |
| 147 | # sets of builders, via Triggers. |
| 148 | |
| 149 | c['schedulers'] = [] |
| 150 | c['schedulers'].append(schedulers.SingleBranchScheduler( |
| 151 | name="master-change", |
| 152 | change_filter=util.ChangeFilter(branch='master'), |
| 153 | treeStableTimer=10, |
| 154 | builderNames=[ "commit-builder" ])) |
| 155 | |
| 156 | c['schedulers'].append(schedulers.SingleBranchScheduler( |
| 157 | name="next-change", |
| 158 | change_filter=util.ChangeFilter( |
| 159 | branch='volatile/next'), |
| 160 | treeStableTimer=10, |
| 161 | builderNames=[ "commit-builder" ] )) |
| 162 | |
| 163 | # Initial build checks on faster, non-VM |
| 164 | c['schedulers'].append(schedulers.Triggerable( |
| 165 | name="trigger-build-first", |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 166 | builderNames=osfastbuilders)) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 167 | |
| 168 | # Build using remaining builders, after firstbuilders. |
| 169 | c['schedulers'].append(schedulers.Triggerable( |
| 170 | name="trigger-build-rest", |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 171 | builderNames=osslowbuilders)) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 172 | |
| 173 | # Analyses tools, e.g. CLang Analyzer scan-build |
| 174 | c['schedulers'].append(schedulers.Triggerable( |
| 175 | name="trigger-build-analyses", |
| 176 | builderNames=analyses_builders)) |
| 177 | # Dist check |
| 178 | c['schedulers'].append(schedulers.Triggerable( |
| 179 | name="trigger-distcheck", |
| 180 | builderNames=["build-distcheck"])) |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 181 | # RPM check and build |
| 182 | c['schedulers'].append(schedulers.Triggerable( |
| 183 | name="trigger-rpm", |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 184 | builderNames=rpmbuilders)) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 185 | |
| 186 | # Try and force schedulers |
| 187 | c['schedulers'].append(schedulers.ForceScheduler( |
| 188 | name="force", |
| 189 | builderNames=allbuilders)) |
| 190 | |
| 191 | c['schedulers'].append(schedulers.Try_Userpass( |
| 192 | name="try", |
Paul Jakma | 0d91779 | 2017-03-05 14:53:59 +0000 | [diff] [blame] | 193 | builderNames=osbuilders |
| 194 | + rpmbuilders |
| 195 | + ["build-distcheck", |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 196 | "clang-analyzer" ], |
| 197 | userpass=users, |
| 198 | port=8031)) |
| 199 | |
| 200 | ####### BUILDERS |
| 201 | c['builders'] = [] |
| 202 | |
| 203 | # The 'builders' list defines the Builders, which tell Buildbot how to perform a build: |
| 204 | # what steps, and which slaves can execute them. Note that any particular build will |
| 205 | # only take place on one slave. |
| 206 | |
| 207 | common_steps = [ |
| 208 | steps.Git(repourl=quaggagit, mode='incremental'), |
| 209 | steps.ShellCommand(command=["./update-autotools"]), |
| 210 | steps.Configure(), |
| 211 | steps.ShellCommand(command=["make", "clean"]), |
| 212 | steps.Compile(), |
| 213 | ] |
| 214 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 215 | ### Default 'check' build, builder instantiated for each OS |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 216 | |
| 217 | factory = util.BuildFactory() |
| 218 | # check out the source |
| 219 | factory.addStep(steps.Git(repourl=quaggagit, mode='incremental')) |
| 220 | factory.addStep(steps.ShellCommand(command=["./update-autotools"], |
| 221 | description="generating autoconf", |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 222 | descriptionDone="autoconf")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 223 | factory.addStep(steps.Configure()) |
| 224 | factory.addStep(steps.ShellCommand(command=["make", "clean"], |
| 225 | description="cleaning", |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 226 | descriptionDone="clean")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 227 | factory.addStep(steps.Compile(command=["make", "-j", "2", "all"])) |
| 228 | factory.addStep(steps.ShellCommand(command=["make", "check"], |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 229 | description="checking", |
| 230 | descriptionDone="make check")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 231 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 232 | # create builder for every OS, for every buildbot |
| 233 | # XXX: at moment this assumes 1:1 OS<->bot |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 234 | for kw in workers: |
| 235 | c['builders'].append(util.BuilderConfig( |
| 236 | name="build-" + kw, |
| 237 | slavenames=workers[kw]["bot"], |
| 238 | factory=factory)) |
| 239 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 240 | ### distcheck Builder, executed on any available bot |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 241 | factory = util.BuildFactory() |
| 242 | # check out the source |
| 243 | factory.addStep(steps.Git(repourl=quaggagit, mode='incremental')) |
| 244 | factory.addStep(steps.ShellCommand(command=["./update-autotools"], |
| 245 | description="generating autoconf", |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 246 | descriptionDone="autoconf")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 247 | factory.addStep(steps.Configure()) |
| 248 | factory.addStep(steps.ShellCommand(command=["make", "clean"], |
| 249 | description="cleaning", |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 250 | descriptionDone="make clean")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 251 | factory.addStep(steps.ShellCommand(command=["make", "distcheck"], |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 252 | description="run make distcheck", |
| 253 | descriptionDone="make distcheck")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 254 | c['builders'].append( |
| 255 | util.BuilderConfig(name="build-distcheck", |
| 256 | slavenames=list(w["bot"] for w in workers.values()), |
| 257 | factory=factory, |
| 258 | )) |
| 259 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 260 | ### LLVM clang-analyzer build, executed on any available non-VM bot |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 261 | |
| 262 | f = util.BuildFactory() |
| 263 | # check out the source |
| 264 | f.addStep(steps.Git(repourl=quaggagit, mode='incremental', |
| 265 | getDescription=True)) |
| 266 | f.addStep(steps.ShellCommand(command=["./update-autotools"], |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 267 | description="run autotools", |
| 268 | descriptionDone="autoconf")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 269 | f.addStep(steps.Configure()) |
| 270 | f.addStep(steps.ShellCommand(command=["make", "clean"], |
| 271 | description="cleaning", |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 272 | descriptionDone="make clean")) |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 273 | |
| 274 | f.addStep(steps.SetProperty(property="clang-id", |
| 275 | value=util.Interpolate("%(prop:commit-description)s-%(prop:buildnumber)s"))) |
| 276 | |
| 277 | f.addStep(steps.SetProperty(property="clang-output-dir", |
| 278 | value=util.Interpolate("../CLANG-%(prop:clang-id)s"))) |
| 279 | f.addStep(steps.SetProperty(property="clang-uri", |
| 280 | value=util.Interpolate("/clang-analyzer/%(prop:clang-id)s"))) |
| 281 | # relative to buildbot master working directory |
| 282 | f.addStep(steps.SetProperty(property="clang-upload-dir", |
| 283 | value=util.Interpolate("public_html/clang-analyzer/%(prop:clang-id)s"))) |
| 284 | |
| 285 | f.addStep(steps.Compile(command=["scan-build", |
| 286 | "-analyze-headers", |
| 287 | "-o", |
| 288 | util.Interpolate("%(prop:clang-output-dir)s"), |
| 289 | "make", "-j", "all"])) |
| 290 | f.addStep(steps.DirectoryUpload( |
| 291 | slavesrc=util.Interpolate("%(prop:clang-output-dir)s"), |
| 292 | masterdest = util.Interpolate("%(prop:clang-upload-dir)s"), |
| 293 | compress = 'bz2', |
| 294 | name = "clang report", |
| 295 | url = util.Interpolate("%(prop:clang-uri)s"), |
| 296 | )) |
| 297 | f.addStep(steps.RemoveDirectory( |
| 298 | dir=util.Interpolate("%(prop:clang-output-dir)s") |
| 299 | )) |
| 300 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 301 | |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 302 | c['builders'].append( |
| 303 | util.BuilderConfig(name="clang-analyzer", |
| 304 | slavenames=list(w["bot"] for w in workers.values() if not w["vm"]), |
| 305 | factory=f)) |
| 306 | |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 307 | |
| 308 | ### RPM: check and build |
| 309 | f = util.BuildFactory () |
| 310 | |
| 311 | # check out the source |
| 312 | f.addStep(steps.Git(repourl=quaggagit, mode='full')) |
| 313 | f.addStep(steps.ShellCommand(command=["./update-autotools"], |
| 314 | description="run autotools", |
| 315 | descriptionDone="autotools")) |
| 316 | f.addStep(steps.Configure()) |
| 317 | f.addStep(steps.ShellCommand(command=["make", "dist"], |
| 318 | description="run make dist", |
| 319 | descriptionDone="make dist")) |
| 320 | # not imported somehow |
| 321 | #f.addStep(steps.RpmLint(fileloc="redhat/quagga.spec")) |
| 322 | f.addStep(steps.ShellCommand(command=["rpmlint", "-i", "redhat/quagga.spec"], |
| 323 | description="run rpmlint", |
| 324 | descriptionDone="rpmlint")) |
| 325 | f.addStep(steps.RpmBuild(specfile="redhat/quagga.spec")) |
| 326 | # rpmdir=util.Interpolate("%(prop:builddir)s/rpm"))) |
| 327 | |
| 328 | # XXX: assuming 1:1 OS:buildbot mapping |
| 329 | for kw in (kw for kw in workers if workers[kw]["pkg"] == "rpm"): |
| 330 | c['builders'].append( |
| 331 | util.BuilderConfig(name="rpm-" + kw, |
| 332 | slavenames="buildbot-" + kw, |
| 333 | factory=f |
| 334 | ) |
| 335 | ) |
| 336 | |
| 337 | ### Co-ordination builds used to sequence parallel builds via Triggerable |
| 338 | |
| 339 | # to understand this you have to read this list and the Triggered schedulers |
| 340 | # to see what sets of builds are being sequenced. Bit clunky, but Buildbot |
| 341 | # doesn't have a way to just specify a pipeline of groups of builders more |
| 342 | # cleanly. |
| 343 | |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 344 | f = util.BuildFactory() |
| 345 | f.addStep(steps.Trigger ( |
| 346 | schedulerNames = [ "trigger-build-first" ], |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 347 | waitForFinish=True, |
| 348 | updateSourceStamp=True |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 349 | )) |
| 350 | f.addStep(steps.Trigger ( |
| 351 | schedulerNames = [ "trigger-build-rest" ], |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 352 | waitForFinish=True, |
| 353 | updateSourceStamp=True |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 354 | )) |
| 355 | f.addStep(steps.Trigger ( |
| 356 | schedulerNames = [ "trigger-build-analyses", "trigger-distcheck" ], |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 357 | waitForFinish=True, |
| 358 | updateSourceStamp=True |
| 359 | )) |
| 360 | f.addStep(steps.Trigger ( |
| 361 | schedulerNames = [ "trigger-rpm" ], |
| 362 | waitForFinish=True, |
| 363 | updateSourceStamp=True |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 364 | )) |
| 365 | |
| 366 | c['builders'].append( |
| 367 | util.BuilderConfig(name="commit-builder", |
Paul Jakma | 390bffa | 2017-03-05 14:27:11 +0000 | [diff] [blame] | 368 | slavenames=[w["bot"] for w in workers.values() if not w["vm"]], |
| 369 | factory=f) |
| 370 | ) |
| 371 | |
Paul Jakma | 08815d5 | 2017-03-04 14:30:44 +0000 | [diff] [blame] | 372 | |
| 373 | ####### STATUS TARGETS |
| 374 | |
| 375 | # 'status' is a list of Status Targets. The results of each build will be |
| 376 | # pushed to these targets. buildbot/status/*.py has a variety to choose from, |
| 377 | # including web pages, email senders, and IRC bots. |
| 378 | |
| 379 | c['status'] = [] |
| 380 | |
| 381 | from buildbot.status import html |
| 382 | from buildbot.status.web import authz, auth |
| 383 | |
| 384 | authz_cfg=authz.Authz( |
| 385 | # change any of these to True to enable; see the manual for more |
| 386 | # options |
| 387 | #auth=auth.BasicAuth([("pyflakes","pyflakes")]), |
| 388 | auth=util.BasicAuth(users), |
| 389 | gracefulShutdown = False, |
| 390 | forceBuild = 'auth', # use this to test your slave once it is set up |
| 391 | forceAllBuilds = 'auth', # ..or this |
| 392 | pingBuilder = 'auth', |
| 393 | stopBuild = 'auth', |
| 394 | stopAllBuilds = 'auth', |
| 395 | cancelPendingBuild = 'auth', |
| 396 | cancelAllPendingBuilds = 'auth', |
| 397 | pauseSlave = 'auth', |
| 398 | ) |
| 399 | c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) |
| 400 | |
| 401 | c['status'].append(status.MailNotifier( |
| 402 | fromaddr="buildbot@quagga.net", |
| 403 | extraRecipients=["paul@jakma.org"], |
| 404 | sendToInterestedUsers=False, |
| 405 | )) |
| 406 | |
| 407 | c['status'].append (status.IRC( |
| 408 | "irc.freenode.net", "bb-quagga", |
| 409 | useColors=True, |
| 410 | channels=[{"channel": "#quagga"}], |
| 411 | notify_events={ |
| 412 | 'exception': 1, |
| 413 | 'successToFailure': 1, |
| 414 | 'failureToSuccess': 1, |
| 415 | }, |
| 416 | )) |
| 417 | |
| 418 | ####### PROJECT IDENTITY |
| 419 | |
| 420 | # the 'title' string will appear at the top of this buildbot |
| 421 | # installation's html.WebStatus home page (linked to the |
| 422 | # 'titleURL') and is embedded in the title of the waterfall HTML page. |
| 423 | |
| 424 | c['title'] = "Quagga" |
| 425 | c['titleURL'] = "https://www.quagga.net/" |
| 426 | |
| 427 | # the 'buildbotURL' string should point to the location where the buildbot's |
| 428 | # internal web server (usually the html.WebStatus page) is visible. This |
| 429 | # typically uses the port number set in the Waterfall 'status' entry, but |
| 430 | # with an externally-visible host name which the buildbot cannot figure out |
| 431 | # without some help. |
| 432 | |
| 433 | c['buildbotURL'] = "http://buildbot.quagga.net/" |
| 434 | |
| 435 | ####### DB URL |
| 436 | |
| 437 | c['db'] = { |
| 438 | # This specifies what database buildbot uses to store its state. You can leave |
| 439 | # this at its default for all but the largest installations. |
| 440 | 'db_url' : "sqlite:///state.sqlite", |
| 441 | } |
| 442 | |
| 443 | #### debug |
| 444 | c['debugPassword'] = debugPassword |