-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
NEWS
3189 lines (2220 loc) · 129 KB
/
NEWS
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
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Major User visible changes in Buildbot. -*- outline -*-
see the git log for a detailed list of changes:
https://github.com/buildbot/buildbot/compare/buildbot-0.8.4...buildbot-0.8.5
* Next Version
** Buildbot can now take advantage of authentication done by a front-end web server:
https://github.com/buildbot/buildbot/pull/266
* Buildbot 0.8.5
** Updated, sphinx-based documentation
The Buildbot documentation has been ported to Sphinx and significantly refactored and extended.
** Better support for users in Buildbot (GSoC project)
Buildbot now tracks user identity across version-control commits, IRC and web
interactions, and Try submissions.
** New and improved Source steps (GSoC project)
Source steps have been rewritten to have a simpler, more consistent
configuration, and to run on the master instead of the slave, allowing much
more control over their behavior.
** EC2 instances are now terminated instead of stopped.
This is really only relevant for EBS-backed instances, as Buildbot will now
free the instance and associated EBS storage when shutting down the slave.
** SQLite databases use write-ahead logging
WAL mode offers much greater concurrency (preventing the dreaded 'database is
locked' errors) and is also more efficient and durable.
** Deprecations, Removals, and Non-Compatible Changes
*** Any custom IStatusListener providers which do not inherit from
StatusListener should provide a checkConfig(all_statuses): method.
This is to verify at startup that there are no conflicting status configurations.
*** The db.buildrequests.claimBuildRequests method can no longer re-claim
already-claimed requests; use reclaimBuildRequests instead. The database no
longer tracks master instances, so the unclaimOldIncarnationRequests method has
been removed. Note that several of the methods in this module now perform
fewer consistency checks, for efficiency.
*** Upgrades directly from versions older than 0.6.5 will no longer
automatically migrate logfiles.
*** Any custom change_hook_dialects should now return a (changes, src)
tuple from its getChange method, instead of just the changes. The src
is used for noting what VCS the changes came from, and is just a string
such as 'git'.
*** Scripts in the contrib directory that use addChange() to send Changes
to the buildmaster now require an additional `src` argument when calling
addChange(). This lets the buildmaster know which VCS the Change is coming
from, such as 'git' or 'svn'. This means that you need to use the version
of your contrib script that corresponds to your buildmaster.
*** The un-documented P4Sync source step has been deprecated and will be
removed in the next version.
** Customizable validation regexps
The global c['validation'] parameter can be used to adjust the regular
expressions used to validate branches, revisions, and properties input by the
user.
** Logging for SVNPoller cleaned up
All logging for SVNPoller now starts with "SVNPoller: ". Previously it was
mixed case and not uniform.
** Source steps have logEnviron parameter
Similar to shell commands, a logEnviron parameter is now supported for Source
steps.
** Interested users for Try
Try jobs can now include the name of an interested user, which will be kept
with the patch and displayed in the web status.
** 'buildbot checkconfig' improved
This command no longer copies the configuration to a temporary directory. This
change allows more complex configurations to be tested with checkconfig.
* Buildbot 0.8.4 (June 12, 2011)
** Buildmaster Metrics
The buildmaster now actively measures a number of quantities that can be useful
in debugging and tuning its performance. See the documentation for more
information.
** Monotone support
Monotone support has returned to Buildbot, thanks to Richard Levitte.
** `Blocker` step
A "beta" version of the Blocker step has been added; this step allows multiple
concurrent builds to be synchronized. It is "beta" in the sense that it may
contain significant bugs, is only documented in the source code, and has an
interface that is subject to non-compatible change in later versions of
Buildbot. See `contrib/blockertest` for a test and demonstration of the new
step's functionality.
** Deprecations, Removals, and Non-Compatible Changes
*** Init script now uses /etc/default/buildmaster for instance configuration.
Also MASTER_ENABLED used in /etc/default/buildmaster now accepts 'true|yes|1'
to enable instance and 'false|no|0' to disable(not case sensitive). Other
values will be considered as syntax error.
*** 'buildbot.status.words.IRC' now defaults to `AllowForce=False` to prevent
IRC bots from being allowed to force builds by default.
*** MasterShellCommand and all of the transfer steps now default to
haltOnFailure=True and flunkOnFailure=True
*** GitPoller's 'workdir' parameter should always be supplied; using the
default (/tmp/gitpoller_work) is deprecated and will not be supported in future
versions.
*** ChangeFilter should now be imported from `buildbot.changes.filter'; the old
import path will still work.
*** What used to be called simply 'Scheduler' should now be instantiated as
'SingleBranchScheduler', and its branch argument is mandatory.
*** The Dependent scheduler is now in its own module,
'buildbot.schedulers.dependent', although the old name will continue to work.
*** The mergeRequests parameters are now more flexible, but an incompatible
change was made: if the BuilderConfig mergeRequests argument is explicitly set
to True, then the default merge method will be used. In earlier versions, this
configuration fell back to the global c['mergeRequests'] parameter's value. To
avoid this, remove `mergeRequests=True` from any BuilderConfig constructor
invocations.
*** The `Status.getBuildSets` method now returns its result via Deferred.
*** The `BuilderControl.getPendingBuilds` method has been renamed to
`getPendingBuildRequestControls`; `BuilderStatus.getPendingBuilds` has been
renamed to `getPendingBuildStatuses`. Both now return their results via
Deferred.
*** The utility method `Builder.getOldesetRequestTime` now returns its result
via a Deferred, and that result is now a DateTime object.
*** The remote BuildSetStatus method `waitForSuccess` is no longer available.
*** The BuildRequestStatus methods `getSubmitTime` and `getSourceStamp` now
return their results via a Deferred. The `asDict` method omits these values,
as it retuns synchronously.
*** Buildbot now uses temporary tables, which can cause problems with
replication in MySQL. See "Database Specification" in the manual for more
details.
** Scheduler Improvements
*** Nightly scheduler now accepts a change_filter argument
** SQLAlchemy & SQLAlchemy-Migrate
Buildbot now uses SQLAlchemy as a database abstraction layer. This gives
greater inter-database compatibility and a more stable and reliable basis for
this core component of the framework. SQLAlchemy-Migrate is used to manage
changes to the database schema from version to version.
*** Postgres support
Buildbot should now work with a Postgres backend just as well as it does with
MySQL or SQLite. Buildbot is actively tested against all three backends.
** Less garish color scheme
The default color scheme for Buildbot has been modified to make it slightly
less, well, neon. Note: This will not affect already-created masters, as
their default.css file has already been created. If you currently use the
default and want to get the new version, just overwrite public_html/default.css
with the copy in this version.
* Buildbot 0.8.3 (December 19, 2010)
** Deprecations and Removals
*** Change sources can no longer call change-related methods on self.parent.
Instead, use self.master methods, e.g., self.master.addChange.
* Next Release
** PBChangeSource now supports authentication
PBChangeSource now supports the `user` and `passwd` arguments. Users with a
publicly exposed PB port should use these parameters to limit sendchange
access.
Previous versions of Buildbot should never be configured with a PBChangeSource
and a publicly accessible slave port, as that arrangement allows anyone to
connect and inject a change into the Buildmaster without any authentication at
all, aside from the hard-coded 'change'/'changepw' credentials. In many cases,
this can lead to arbitrary code injection on slaves.
** Experiemental Gerrit and Repo support
A new ChangeSource (GerritChangeSource), status listener (GerritStatusPush),
and source step (Repo) are available in this version. These are not fully
documented and still have a number of known bugs outstanding (see
http://buildbot.net/trac/wiki/RepoProject), and as such are considered
experimental in this release.
** WithProperties now supports lambda substitutions
WithProperties now has the option to pass callable functions as keyword
arguments to substitute in the results of more complex Python code at
evaluation-time.
** New 'SetPropertiesFromEnv' step
This step uses the slave environment to set build properties.
** Deprecations and Removals
*** The console view previously had an undocumented feature that would strip
leading digits off the category name. This was undocumented and apparently
non-functional, and has been removed. (#1059)
*** contrib/hg_buildbot.py was removed in favor of buildbot.changes.hgbuildbot.
*** The misnamed sendchange option 'username' has been renamed to 'who'; the old
option continues to work, but is deprecated and will be removed. (#1711)
* Buildbot 0.8.2 (October 29, 2010)
** Upgrading
Upgrading to from the previous version will require an 'upgrade-master' run.
However, the schema changes are backward-compatible, so if a downgrade is
required, it will not be difficult.
** New Requirements
The Buildmaster now requires Jinja-2.1 or higher.
Both master and slave now require Twisted-8.0.0. Although Twisted-2.5.0 may
still work, it is not tested and not supported.
** Command-line options changed
To resolve conflicting command-line options (ticket #972) for sendchange
command the following changes were done:
* `-m` option now means `--master`
* `-c` option now means `--comments`
* `-C` option now means `--category`
Added new `-n|--no-logrotate` flag to create-master command which disables
internal logging and log rotation mechanism in buildbot.tac (ticket #973)
** MasterShellCommand semantics change
The MasterShellCommand now provides the buildmaster's environment to the step
by default; pass env={} to pass a clean environment, instead.
** Log Rotation
The default 'create-master' output now rotates ten twistd.log files, each of
about 10MiB. This is a change from older versions, which would rotate an
unbounded number of 1MiB files.
** New configuration key, 'changeCacheSize'
This sets the number of changes that buildbot will keep in memory at once.
Users of distributed version control systems should consider setting this to a
high value (e.g. 10,000)
** New libvirt-based Latent Buildslave Support
This extends the support already included for EC2 buildslaves to include any
virtualization platform supported by libvirt.
** Canceling Pending Builds for a Change
Change pages on the webstatus now have buttons to cancel any pending
builds that include that change (across all builders). The corresponding
authz privledge to control access to this feature is 'stopChange'.
** New Change source
*** CVSMaildirSource
This parses mail sent by buildbot_cvs_mail.py in contrib directory.
See docs for more info.
** New Steps
*** VC++ 9, VS2008, VCExpress9 - part of the vstudio suite of steps
** Deprecations and Removals
*** Removed sendchange's --revision_number argument (use --revision)
*** Deprecating old CVS MairdirSources:
Please post to the list if you are using
FreshCVS FCMaildirSource
Syncmail SyncmailMaildirSource
Bonsai BonsaiMaildirSource
*** statusgui is deprecated in this version and will be removed in the next
release. Please file a bug at http://buildbot.net if you wish to reverse this
decision.
*** The Twisted-only steps BuildDebs and ProcessDocs have been removed.
* Release 0.8.1 (June 16, 2010)
** Slave Split into separate component
Installing 'buildbot' will no longer allow you to run a slave - for that,
you'll now need the 'buildslave' component, which is available by easy_install.
This is merely a packaging change - the buildslave and buildbot components are
completely inter-compatible, just as they always have been.
** Features
*** Add googlecode_atom.py to contrib (ticket #842)
*** Implement clean master shutdown, available through WebStatus
** Fixes
*** Pass local environment variables along with getProcessOutput. Required for
ssh agent authentication.
*** IRC doc fixes (ticket #852)
*** Remove builder count from one_line_per_build (ticket #854)
*** Set the 'revision' property more often (ticket #101)
*** Change property priority ordering (ticket #809)
*** Fixes to MaildirSource for CVS
*** Use shutil.rmtree on POSIX systems
*** Fix NameError in MailNotifier (ticket #758)
*** Reduce verbosity of patches in twistd.log (ticket #803)
*** Documentation updates to reflect UI customization via
templates (ticket #866)
** Deprecations
*** Arch, Bazaar, and Monotone to be removed in 0.8.2
This decision isn't final, but support for these VC's will be removed in
version 0.8.2 unless a maintainers steps forward to document, test, and update
them.
*** Support for starting buildmaster from Makefiles to be removed in 0.8.2
In a little-used feature, 'buildbot start' would run 'make start' if a
Makefile.buildbot existed in the master directory. This functionality will be
removed in Buildbot-0.8.2, and the create-master command will no longer create
a Makefile.sample. Of course, Buildbot still supports build processes on the
slave using make!
* Release 0.8.0 (May 25, 2010)
** (NOTE!) Scheduler requires keyword arguments
If you are creating your Scheduler like this:
Scheduler("mysched", "mybranch", 0, ["foo", "bar"])
then it's time to change that to specify each of the arguments with a keyword:
Scheduler(name="mysched", branch="mybranch",
treeStableTimer=0, builderNames=["foo", "bar"])
** Database Backend
Scheduler, change, and build request information is now stored in a database -
by default, in SQLite, although MySQL is also supported. With this change,
scheduled builds will persist over buildmaster restarts, as will
interrelationships between schedulers (e.g., Triggerable and Dependent).
Upgrading to the new database backend is easy, although it brings additional
requirements on the buildmaster. See the Buildbot documentation for more
information.
** Visual Studio / VC++ Compile Steps
** New Change/SourceStamp attributes 'project' and 'repository'
These attributes can be used to further refine matching by schedulers.
Repository completes the SourceStamp: the tuple of (repository, branch,
revision) completely specifies a source code tree. Likewise, the project
attribute can be used to support building several distinct projects within one
buildmaster, replacing the use of category for this purpose. Matching can be
done using regular expressions, so it's even possible to support nested
projects!
** ShellCommands expand environment variables
If you pass to a shell command an environment variable like this:
ShellCommand(..., env={"FOO": "${BAR}"})
then, on the slave side the variable FOO will have the same value as
the alread existing BAR variable on the slave. This is mostly used to
expand variable like this: "PATH": "/my/directory:${PATH}" where PATH
will have "/my/directory" prepended to it.
** Builders can setup properties
There is a new parameter to the builders to setup properties on a
per-builder basis.
** New /json web status
This view has lots of useful information perfectly formed for serving as input
to JavaScript status displays. See /json/help for details.
** Jinja
All web status is now generated using the Jinja templating engine, which gives
buildbot a much more attractive and maintainable appearance. Buildbot's output
is also now XHTML-compliant!
** Authorization Framework
The web-based status displays now provide fine-grained control over who can
do what - force builds, stop builds, cancel builds, etc. See the manual for
configuration details.
** Mercurial uses full revisions
Mercurial now sets got_revision to the full 40-character revision id instead of
the short IDs.
** Cleanup, Bug Fixes, and Test Fixes
Thanks to help from a number of devoted contributors, this version of Buildbot
has seen a lot of house-cleaning, and even passes all of its own unit tests!
** Removals
*** Removed buildbot.status.html.Waterfall (deprecated in 0.7.6)
Note that this does not remove the waterfall -- just an old version of it which
did not include the rest of the WebStatus pages.
*** BuildmasterConfig no longer accepts 'bots' and 'sources' as keys
(deprecated in 0.7.6). Use 'slaves' and 'change_source' instead.
* Release 0.7.12 (January 21, 2010)
** New 'console' display
This is a new web status view combining the best of the (t)grid and waterfall
views.
** New 'extended' stylesheet
Buildbot has a new, much nicer stylesheet available. Copy the file
buildbot/status/web/extended.css over your existing public_html/buildbot.css to
se it.
** Builders can be configured with an object
Instead of a list of dictionaries, builders can now specified using a
BuilderConfig object in the configuration file. This will allow for better
argument checking and default values, and also makes it easier for users to
create subclasses to handle site-specific builder details. The old,
dictionary-based method of configuration is still supported.
** Check for common mis-configuration in addStep
When adding a new step to a factory, either of these are acceptable:
f.addStep(ShellCommand(command="echo hello, world", description="say hi"))
f.addStep(ShellCommand, command="echo hello, world", description="say hi")
but trying to mix these syntaxes is a common misconfiguration:
f.addStep(ShellCommand(command="echo hello, world"), description="say hi")
in which case the description argument was silently ignored. This is now an
error.
** Support for log compression
Log files can be compressed on the master side using either gzip or bzip2.
** Builder.ping no longer accepts timeout argument (bug #664).
The implementation was not robust enough and could cause the master to
unexpectedly disconnect the slave.
** MailNotifier's customMesg replaced by messageFormatter
The customMesg mechanism had the unfortunate side effect of loading all data
for a build into memory simultaneously, which for some builds could cause
memory exhaustion.
** Suppression of selected compiler warnings
The WarningCountingShellCommand class has been extended with the ability to
upload from the slave a file contain warnings to be ignored. See the
documentation of the suppressionFile argument to the Compile build step.
** New buildstep `MTR'
A new class buildbot.process.mtrlogobserver.MTR was added. This buildstep is
used to run test suites using mysql-test-run. It parses the stdio output for
test failures and summarises them on the waterfall page. It also makes server
error logs available for debugging failures, and optionally inserts
information about test runs and test failures into an external database.
** Python API Docs
The docstrings for buildbot are now available in a web-friendly format:
http://buildbot.net/buildbot/docs/latest/reference
** Many, many bugfixes
* Release 0.7.11p (July 16, 2009)
Fixes a few test failures in 0.7.11, and gives a default value for branchType
if it is not specified by the master.
* Release 0.7.11 (July 5, 2009)
Developers too numerous to mention contributed to this release. Buildbot has
truly become a community-maintained application. Much hard work is not
mentioned here, so please consult the git logs for the detailed changes in this
release.
** Better Memory Performance, Disk Cleanup
Buildbot handles its memory usage a bit better, and can automatically purge old
history to keep memory and disk usage low. Look for eventHorizon,
buildHorizon, logHorizon, and changeHorizon.
** Password Protection for Force Build and Stop actions
It is now possible to require authentication to force build and stop via the
WebStatus interface. To use this, set the 'auth' field of WebStatus to a valid
IAuth implementation. Current implementations are:
BasicAuth with a list of user/passwords
HTPasswdAuth with an .htpasswd file
By default, the unauthenticated behavior will occur.
** Web Status changes
The "Graceful Shutdown" feature, as a kind of "force", now obeys allowForce.
The waterfall and other pages are more deeply interlinked.
Pending builds can be individually cancelled, or cancelled in bulk.
** Fixed Transfer Steps
Transfer step classes are more reliable; DirectoryUpload and DirectoryDownload
use tarfile instead of manually framing files. The DirectoryUpload step also
now supports compression.
** Conditional Steps
Steps now take a doStepIf parameter which can be used to implement simple
conditional execution of a step.
** Colorized Steps
Steps are now hilighted with a color in the build view to indicate their
success or failure.
** Improved build prioritization
Bugfixes and fairer scheduling
** Transposed Grid
Similar to the grid view, but with the axes reversed and showing different
info. Located at /tgrid.
** Trigger steps improvements
Trigger now supports copy_properties, to send selected properties to the
triggered build.
* Release 0.7.10 (25 Feb 2009)
This release is mainly a collection of user-submitted patches since
the last release.
** New Features
*** Environment variables in a builder (#100)
It is useful to be able to pass environment variables to all steps in a
builder. This is now possible by adding { .. 'env': { 'var' : 'value' }, ... }
to the builder specification.
*** IRC status plugin improvements (#330, #357, #378, #280, #381, #411, #368)
*** usePTY specified in master.cfg, defaults to False (#158, #255)
Using a pty has some benefits in terms of supporting "Stop Build", but causes
numerous problems with simpler jobs which can be killed by a SIGHUP when their
standard input is closed. With this change, PTYs are not used by default,
although you can enable them either on slaves (with the --usepty option to
create-slave) or on the master.
*** More information about buildslaves via the web plugin (#110)
A new page, rooted at /buildslave/$SLAVENAME, gives extensive information about
the buildslave.
*** More flexible merging of requests (#415)
The optional c['mergeRequests'] configuration parameter takes a function
which can decide whether two requests are mergeable.
*** Steps can be made to run even if the build has halted (#414)
Adding alwaysRun=True to a step will cause it to run even if some other step
has failed and has haltOnFailure=True.
*** Compress buildstep logfiles (#26)
Logs for each buildstep, which can take a lot of space on a busy buildmaster,
are automatically compressed after the step has finished.
*** Support for "latent" buildslaves
The buildslaves that are started on-demand are called "latent" buildslaves.
Buildbot ships with an abstract base class for building latent buildslaves, and
a concrete implementation for AWS EC2.
*** Customized MailNotifier messages (#175)
MailNotifier now takes an optional function to build the notification message,
allowing ultimate site-level control over the format of buildbot's notification
emails.
*** Nightly scheduler support for building only if changes have occurred
With the addition of onlyIfChanged=True, the Nightly scheduler will not schedule
a new build if no changes have been made since its last scheduled build.
*** Add ATOM/RSS feeds to WebStatus (#372)
Two new pages, /atom and /rss, provide feeds of build events to any feed
reader. These paths take the same "category" and "branch" arguments as the
waterfall and grid.
*** Add categories to Schedulers and Changes (#182)
This allows a moderate amount of support for multiple projects built in a
single buildmaster.
*** Gracefully shut down a buildslave after its build is complete
The /buildslaves/$SLAVENAME pages have a "Gracefully Shutdown" button which
will cause the corresponding slave to shut itself down when it finishes its
current build. This is a good way to do work on a slave without causing a
spurious build failure.
*** SVN source steps can send usernames and passwords (#41)
Adding username="foo" and/or password="bar" to an SVN step will cause
--username and --password arguments to be passed to 'svn' on the slave side.
Passwords are suitably obfuscated in logfiles.
** New Steps
*** DirectoryUpload (#393)
This step uploads an entire directory to the master, and can be useful when a
build creates several products (e.g., a client and server package).
*** MasterShellCommand
This step runs a shell command on the server, and can be useful for
post-processing build products, or performing other maintenance tasks on the
master.
*** PyLint (#259)
A PyLint step is available to complement the existing PyFlakes step.
** Bugs Fixed
*** Process output from new versions of Test::Harness (#346)
*** Fixes to the try client and scheduler
*** Remove redundant loop in MailNotifier (#315)
*** Display correct $PWD in logfiles (#179)
*** Do not assume a particular python version on Windows (#401)
*** Sort files in changes (#402)
*** Sort buildslaves lexically (#416)
*** Send properties to all builds initiated by AnyBranchScheduler
*** Dependent Schedulers are more robust to reconfiguration (#35)
*** Fix properties handling in triggered buidls (#392)
*** Use "call" on Windows to avoid errors (#417)
*** Support setDefaultWorkdir in FileUpload and FileDownload (#209)
*** Support WithProperties in FileUpload and FileDownload (#210)
*** Fix a bug where changes could be lost on a master crash (#202)
*** Remove color settings from non-presentation code (#251)
*** Fix builders which stopped working after a PING (#349, #85)
*** Isolate Python exceptions in status plugins (#388)
*** Notify about slaves missing at master startup (#302)
*** Fix tracebacks in web display after a reconfig (#176)
** Version-Control Changes
*** Many Mercurial fixes
- Inrepo branch support finalized (source step + changegroup hook + test case)
(#65 #185 #187)
- Reduced amount of full clones by separating clone with update into
clone/pull/update steps (#186, #227) (see #412 for future work here)
- Fixed mercurial changegroup hook to work with Mercurial 1.1 API (#181, #380)
*** Many git fixes
*** Add got_revision to Perforce support (#127)
*** Use "git foo" everywhere instead of deprecated "git-foo"
** Minor Changes
*** factory.addSteps (#317)
If you have a common list of steps that are included in multiple factories, you
can use f.addSteps(steplist) to add them all at once.
*** Twisted logfile rotation and cleanup (#108)
By default, Buildbot now rotates and cleans up the (potentially voluminous)
twistd.log files.
*** Prioritize build requests based on the time they wre submitted (#334)
Balancing of load is a bit more fair, although not true load balancing.
* Release 0.7.9 (15 Sep 2008)
** New Features
*** Configurable public_html directory (#162)
The public_html/ directory, which provides static content for the WebStatus()
HTTP server, is now configurable. The default location is still the
public_html/ subdirectory of the buildmaster's base directory, but you can
change this by passing a suitable argument when creating the WebStatus()
instance in your master.cfg file:
c['status'].append( WebStatus(8080, public_html="/var/www/buildbot") )
*** Lock access modes (#313)
Albert Hofkamp added code to provide two distinct access modes to Locks:
"counting" and "exclusive". Locks can accept a configurable number of
"counting"-mode users, or a single "exclusive"-mode. For example, a Lock is
defined with maxCount=3, and then a 'compile' BuildStep uses this lock in
counting mode, while a 'cleanup' BuildStep uses this lock in exclusive mode.
Then, there can be one, two, or three simultaneous Builds in the compile step
(as long as there are no builds in the cleanup step). Only one build can be
in the cleanup step at a time, and if there is such a build in the cleanup
step, then the compile steps in other builds will wait for it to finish.
Please see the "Interlocks" section of the user's manual for more details.
** Bugs Fixed
*** Buildslave missing_timeout= fired too quickly (#211)
By providing a missing_timeout= argument when creating the BuildSlave
instance, you can ask the buildmaster to send email if a buildslave is
disconnected for too long. A bug in the previous version caused this
notification to be sent too soon, rather than waiting until the timeout
period expired. This should be fixed now.
*** Test command display fixed (#332)
In the previous version, a steps.shell.Test step would display the parsed
test results (in the step's box on the waterfall display) in lieu of any
other descriptive text the step might provide. In this release, these two
pieces of information are combined.
** Minor Changes
The buildmaster's version is logged to its twistd.log file at startup. The
buildslave does the same, to its own logfile.
Remote commands now record how long each command took. The "elapsedTime="
message will appear in the step's main logfile.
The "buildbot restart" command no longer fails if the buildbot wasn't already
running.
The FileUpload and FileDownload steps now create their target directories
(and any missing intermediate directories) before writing to the destination
file.
The per-build and per-step web pages now show the start, finish, and elapsed
time of their build or step.
If a Subversion-based build is started with a mixture of Changes that specify
particular numeric revisions and "HEAD" Changes (which indicate that a trunk
checkout is desired), the build will use a trunk checkout. Previously this
would probably cause an error. It is not clear how this situation might
arise.
** Compability With Other Tools
The mercurial commit hook (buildbot.changes.hgbuildbot) in the previous
version doesn't work with hg-1.0 or later (it uses an API function that was
present in the hg-0.9.5 release, but was removed from hg-1.0). This
incompability has been fixed: the new version of buildbot should be
compatible with hg-1.0 and newer (and it probably retains compability with
hg-0.9.5 and earlier too). (#328)
The Git tool has traditionally provided two ways to run each command, either
as subcommands of /usr/bin/git (like "git checkout"), or as individual tools
(like /usr/bin/git-checkout). The latter form is being removed in the
upcoming 1.6 Git release. Previous versions of Buildbot have used the
git-checkout form, and will break when Git is upgraded to 1.6 or beyond. The
new Buildbot release switches to the subcommand form. Note that this is a
change on the buildslave side.
The Git checkout command will now use the default branch (as set in the
steps.source.Git() step definition) if the changes that it is building do not
specify some other branch to build. (#340)
** Deprecation Schedule
No features have been deprecated in this release, and no deprecated features
have been removed. As a reminder, the following deprecated features are
scheduled for removal in an upcoming release:
c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6,
and will be removed by 0.8.0.
c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by
0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples.
The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and
will be removed by 0.8.0.
* Release 0.7.8 (24 Jul 2008)
** New features
The IRC bot will respond to three new commands: 'notify' subscribes the
channel (or the sender, if the command is sent as a private "/msg") to hear
about build events. 'join' tells the bot to join some new IRC channel.
'leave' tells it to leave a channel. See the "IRC Bot" section of the User's
Manual for details. (#171)
Build Steps now have "statistics", in addition to logfiles. These are used to
count things like how many tests passed or failed. There are methods to sum
these counters across all steps and display the results in the Build status.
The Waterfall display now shows the count of failed tests on the top-most box
in each column, using this mechanism.
The new buildbot.steps.shell.PerlModuleTest step was added, to run Perl unit
tests. This is a wrapper around the regular ShellCommand that parses the
output of the standard perl unit test system and counts how many tests
passed/failed/etc. The results are put into the step's summary text, and a
count of tests passed/failed/skipped are tracked in the steps's statistics.
The factory.CPAN build factory has been updated to use this, so configuring a
Buildbot to test a perl module available from CPAN should be as easy as:
s = source.CVS(cvsroot, cvsmodule)
f = factory.CPAN(s)
Build Properties have been generalized: they remain associated with a single
Build, but the properties can be set from a variety of sources. In previous
releases, the Build itself would set properties like 'buildername', 'branch',
and 'revision' (the latter two indicating which version of the source code it
was trying to get), and the source-checkout BuildSteps would set a property
named 'got_revision' (to indicate what version of the soruce code it actually
got). In this release, the 'scheduler' property is set to indicate which
Scheduler caused the build to be started. In addition, the config file can
specify properties to be set on all Builds, or on all Builds for a specific
Builder. All these properties are available for interpolation into
ShellCommands and environment variables by using the WithProperties() marker.
It may be easier to implement simple build parameterization (e.g. to upload
generated binaries to a specific directory, or to only perform long-running
tests on a nightly build instead of upon every checkin) by using these Build
Properties than to write custom BuildSteps.
** Other improvements
The /buildslaves web page shows which slaves are currently running builds.
Offline slaves are displayed in bold.
Buildbot's setup.py now provides metadata to setuptools (if installed): an
entry_points script was added, and a dependency upon twisted-2.4.x or newer
was declared. This makes it more likely that 'easy_install buildbot' will
work.
The MailNotifier class acquired a mode="passing" flag: in this mode, the
buildbot will only send mail about passing builds (versus only on failing
builds, or only on builds which failed when the previous build had passed).
** Bugs fixed
Don't display force/stop build buttons when build control is disabled (#246)
When a build is waiting on a lock, don't claim that it has started (#107)
Make SVN mode=copy tolerate symlinks on freebsd, "cp -rp" -> "cp -RPp" (#86)
The svnpoller changesource now ignores branch deletion (#261)
The Git unit tests should run even if the user has not told Git about their
username/email.
The WebStatus /xmlrpc server's getStatus() method was renamed to the
more-accurate getLastBuildResults().
The TinderboxMailNotifier status output acquired an useChangeTime= argument.
The bonsaipoller changesource got some fixes.
** Deprecation Schedule
No features have been deprecated in this release, and no deprecated features
have been removed. As a reminder, the following deprecated features are
scheduled for removal in an upcoming release:
c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6,
and will be removed by 0.8.0.
c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by
0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples.
The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and
will be removed by 0.8.0.
* Release 0.7.7 (29 Mar 2008)
** Things You Need To Know
*** builder names must not start with an underscore (`_').
These are now reserved for internal buildbot purposes, such as the magic
"_all" pseudo-builder that the web pages use to allow force-build buttons
that start builds on all Builders at once.
** New Features
*** "buildbot checkconfig"
The "buildbot checkconfig" command will look at your master.cfg file and tell