Buildbot
The Continuous Integration
Python framework
Steps
● Continuous Integration
○ Definition
○ Benefits
● Buildbot
○ Architecture
○ Views
○ Configuration
● Conclusions, tips, Q&A, ...
Who am I?
CI: Definition by Martin Fowler
Continuous Integration is a software development
practice where members of a team integrate their
work frequently, usually each person integrates at
least daily - leading to multiple integrations per day.
Each integration is verified by an automated build
(including test) to detect integration errors as
quickly as possible. Many teams find that this
approach leads to significantly reduced integration
problems and allows a team to develop cohesive
software more rapidly.
http://goo.gl/FC9S4U 1/3
CI: Benefits
● Reduce risk and time.
● Reduce manual repetitive processes.
● Create a version of software by a known,
reliable, proven and repeatable process
versioning.
● Improve visibility of project status.
● Achieve greater self-confidence and
security in the development team.
2/3
CI: Why? How?
● Process quality.
● Product quality.
● People quality.
3/3
Buildbot: System Architecture
1/2
BUILDSLAVES
CHANGES = CHANGESOURCES
SCHEDULERS
COMMANDS = BUILDERS
FACTORY = STEPS
STATUS TARGETS
Buildbot: Buildmaster Architecture
2/2
View: Waterfall
1/3
View: Build Slaves
2/3
View: Console
3/3
Config: HTML Templates = Jinja2
1/7
Config: PROJECT IDENTITY + DB
URL
2/7
SQLite
MySQL
PostgreSQL
Config: BUILDSLAVES
3/7
Config: CHANGESOURCES
4/7
Config: SCHEDULERS
SingleBranchScheduler
AnyBranchScheduler
Dependent Scheduler
Periodic Scheduler
Nightly Scheduler
Try Schedulers
Triggerable Scheduler
NightlyTriggerable Scheduler
ForceScheduler Scheduler 5/7
Config: BUILDERS
ShellCommand
BuildEPYDoc
Sphinx
PyFlakes
PyLint
FileExists
CopyDirectory
RemoveDirectory
MakeDirectory 6/7
Config: STATUS TARGETS
WebStatus
MailNotifier
IRC Bot
StatusPush (to callback)
HttpStatusPush (in json)
GerritStatusPush
GitHubStatus 7/7
Conclusions, tips, Q&A, ...
● Display = Collaboration
● Python framework
● X branches * Y schedulers * Z status * N slaves
● A starting point: http://goo.gl/AcKoGZ
(https://github.com/carlessanagustin/buildbot-bootstrap)
Thank you very much
@carlesanagustin
___@carlessanagustin.___
www.carlessanagustin.com
+34 655 4XX XXX

Buildbot: The Continuous Integration Python framework