2013-03-24 Continuous Integration at Google Scale.pdf
Recommend Documents
The repository server is running Atlassian. Bitbucket Server [4] which, in addition to basic Git server functionality, provides a web interface, pull requests and.
progress and quality, and hence anticipate,. p g q y, p , ... “Continuous Integration
is a software. Continuous ..... Continuous Integration: Improving Software Quality
and ... Reducing Risk by Paul Duvall, Steve Matyas, and Andrew. Glover.
Download. Connect more apps... Try one of the apps below to open or edit this item. continuous integration pdf.pdf. cont
Distributed using internal version of bazel.io to a large compute farm. â Almost all testing is automated - no time fo
risks. Reducing Assumptions. Continuous Integration can help reduce
assumptions on a ..... could talk endlessly about improved software quality and
reduced.
2 K. Neumann, M. Rolf, and J. J. Steil to apply self-optimization and ...... H. Daniels and M. Velikova, âMonotone and partially monotone neural networksâ,.
productivity and software delivery ... Agile software development has seen ... India. He started his career in the domai
DescriptionIn past few years,. Agile software development has seen tremendous growth across the world. There is huge dem
... updating and delivering applications Zymr is a cloud consulting and full stack ... PDF Download Learning Continuous
Key FeaturesSpeed up and increase software productivity and software delivery using ... examplesBook DescriptionIn past
Terraform - Up and Running: Writing Infrastructure as Code · AWS Certified Solutions Architect Official Study Guide: Ass
continuous delivery using. Jenkins through powerful ... Agile software development has seen tremendous ... implement a C
... Learning Continuous Integration with Jenkins pdf, Learning Continuous Integration with Jenkins ppt, Learning Continu
Jan 19, 2017 - return ResponseEntity . ok(new Message(âRepository set successfullyâ, 200));. 18 l. 19 l. Listing 4.9: Method setupRepository of EntryController.
confusion sets, and then discriminative training will learn to separate the ... quires in each iteration identifying the
2Institute of Software Technology. Vienna University ... of event data and its transformation into business metrics. ... Workflow management systems log the .... relatively small amount of data represents transactions or other relevant information.
Jul 9, 2014 - Framework and Application Development. Journal of Open ... applications, âpower usersâ working with MOOSE need access to some of the.
CI-Server Jenkins. ⢠CI mit Debian-Paketen. ⢠Weitere Beispiele für Einsatz von. CI/CD im Rechenzentrum. ⢠Best P
practice of continuous integration of agile software development methods has .... The in-links are provided by the Yahoo! search engine. Ohloh.net goes down to ...
Climbing the "Stairway to heaven" - A mulitiple-case study exploring barriers in the transition from agile development towards continuous deployment of software.
Metrics, SCRUM, Continuous Integration, test coverage, sta- tistical analysis ...... environment. This enables to do load and stress tests to ... As a build and test environment, regular Linux servers are used. ...... Computer Performance Evaluation.
of incorrect changes have occurred, it is also capable of return- ing the old .... the GNOME packages, treating the two process that this model present and works ...
Weitere Beispiele für Einsatz von. CI/CD im Rechenzentrum. ⢠Best Practices ... Page 4 ... benutzbar (reprepro/freigh
2013-03-24 Continuous Integration at Google Scale.pdf
â>10,000 developers in 40+ offices. â5000+ projects under active development. â17k submissions per day (1 every
Continuous Integration at Google Scale By John Micco Developer Infrastructure
Google Confidential and Proprietary
Speed and Scale ● >10,000 developers in 40+ offices ● 5000+ projects under active development ● 17k submissions per day (1 every 5 seconds) ● Single monolithic code tree with mixed language code ● Development on one branch - submissions at head ● All builds from source ● 20+ sustained code changes per minute with 60+ peaks ● 50% of code changes monthly ● 100+ million test cases run per day
Google Confidential and Proprietary
Overview 1. Continuous Integration Goals 2. Continuous Integration at Google 3. Practical Matters
Google Confidential and Proprietary
Continuous Integration ● Provide real-time information to build monitors ○ Identify failures fast ○ Identify culprit Changes ○ Handle flaky tests ● Provide frequent green builds for cutting releases ○ Identify recent green builds ○ Show results of all testing together ○ Allow release tooling to choose a green build ○ Handle flaky tests
Google Confidential and Proprietary
Continuous Integration (cont) ● Develop Safely
○ Sync to last green changelist ○ Identify whether change will break the build before submit ○ Submit with confidence ○ Handle flaky tests
Google Confidential and Proprietary
Standard Continuous Build System ● ● ● ●
Triggers builds in continuous cycle Cycle time = longest build + test cycle Tests many changes together Which change broke the build?
Google Confidential and Proprietary
Google Continuous Build System ● Triggers tests on every change ● Uses fine-grained dependencies ● Change 2 broke test 1
Google Confidential and Proprietary
Continuous Integration Display
Google Confidential and Proprietary
Benefits ● Identifies failures sooner ● Identifies culprit change precisely ○ Avoids divide-and-conquer and tribal knowledge ● Lowers compute costs using fine grained dependencies ● Keeps the build green by reducing time to fix breaks ● Accepted enthusiastically by product teams ● Enables teams to ship with fast iteration times ○ Supports submit-to-production times of less than 36 hours for some projects
Google Confidential and Proprietary
Costs ●
Requires enormous investment in compute resources (it helps to be at Google) grows in proportion to: ○ ○ ○ ○ ○
●
Submission rate Average build + test time Variants (debug, opt, valgrind, etc.) Increasing dependencies on core libraries Branches
Requires updating dependencies on each change ○
Takes time to update - delays start of testing
Google Confidential and Proprietary
Developing Safely - presubmit ●
Makes testing available before submit
●
Uses fine-grained dependencies ○
Recalculate any dependency changes
●
Uses same pool of compute resources at high priority
●
Avoids breaking the build
●
Captures contents of a change and tests in isolation
●
○
Tests against head
○
Identifies problems with missing files
Integrates with ○
submission tool - submit iff testing is green
○
Code Review Tool - results are posted to the review thread Google Confidential and Proprietary
Example Presubmit Display
Google Confidential and Proprietary
External TAP 2.0 Architecture
Google Confidential and Proprietary
Practical Matters - Flaky Tests ● System assumes tests pass or fail reliably given code ○ Tests that don't have this property are "flaky" ● Sources of test flakiness: ○ Infrastructure ■ machine failure ■ environment / setup problems ■ leakage - one test impacting another ■ Overloading resources ○ Tests ■ race conditions ■ external dependencies ■ timeouts ○ Code-under-test ■ memory problems ■ order dependence (e.g. hash tables) Google Confidential and Proprietary
Flaky Tests (cont) ●
Causes ○ ○ ○ ○ ○
●
Inability to find changes breaking the build - false positives Inability to identify green builds for releases Wasted work for build monitors Wasted compute resources Inappropriately failing presubmits - wasting developer time
Solutions (Google does all of these): Fix them!!! ■ Difficult - requires developer time ○ Hide them ■ Retry causing delays ■ Identify infrastructure flakes ■ Use metrics to ignore ○ Track them ■ Provide metrics to prioritize fix / hide ○
Google Confidential and Proprietary
Practical Matters - Test Growth
●
Sources of growth in test execution time ○ ○ ○ ○
●
More developers = increased submission rate More tests Longer running tests Tests consuming more resources (threading)
Examine the growth trends ○ ○
Predict compute needs Look for any build system features required
Google Confidential and Proprietary
Build / Test Compute Resources
1
n
Ja
1 20
l Ju
11 0 2
2
n
Ja
1 20
2
l
Ju
1 20
n
Ja
13 0 2
Test Growth ●
Problems ○ ○ ○
●
Quadratic execution time growth Ultimately cannot run every affected test @ every change Low latency results still top requirement
Solution: Just in time scheduling (JIT)
Google Confidential and Proprietary
JIT
Continuous Integration: ● Run every test affected at every changelist.
as often as possible In Production: ● Build and run tests concurrently on Google’s distributed build and test backend.
JIT Scheduling Schedule tests to run only when system has capacity. Produce project-wide results at periodic changelists.
Same User Experience; Lower Cost
Culprit finding
● Failures / breaks between changes may be more difficult to localize to the offending change. ● Short-term: Command-line tool to find culprits ● Longer Term: Integrated automatic culprit finding
Google Confidential and Proprietary
Same User Experience; Lower Cost
Flaky Tests
● Tests which only pass some of the time could cause fewer green statuses for projects. ● Short Term: Optionally retry failed tests ● Longer Term: Tightly integrated flake mitigation and automatic / manual re-running of suspected flakes