Buildbot The Continuous Integration Python framework
BuildbotThe 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
BUILDSLAVESCHANGES = CHANGESOURCESSCHEDULERS
COMMANDS = BUILDERSFACTORY = 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
SQLiteMySQL
PostgreSQL
Config: BUILDSLAVES
3/7
Config: CHANGESOURCES
4/7
Config: SCHEDULERS
SingleBranchSchedulerAnyBranchSchedulerDependent SchedulerPeriodic SchedulerNightly SchedulerTry SchedulersTriggerable SchedulerNightlyTriggerable SchedulerForceScheduler Scheduler 5/7
Config: BUILDERS
ShellCommand
BuildEPYDocSphinxPyFlakesPyLintFileExistsCopyDirectoryRemoveDirectoryMakeDirectory 6/7
Config: STATUS TARGETS
WebStatusMailNotifierIRC Bot
StatusPush (to callback)HttpStatusPush (in json)GerritStatusPushGitHubStatus 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