[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2889160.2889222acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

CloudBuild: Microsoft's distributed and caching build service

Published: 14 May 2016 Publication History

Abstract

Thousands of Microsoft engineers build and test hundreds of software products several times a day. It is essential that this continuous integration scales, guarantees short feedback cycles, and functions reliably with minimal human intervention. This paper describes CloudBuild, the build service infrastructure developed within Microsoft over the last few years. CloudBuild is responsible for all aspects of a continuous integration workflow, including builds, test and code analysis, as well as drops, package and symbol creation and storage. CloudBuild supports multiple build languages as long as they fulfill a coarse grained, file IO based contract. CloudBuild uses content based caching to run build-related tasks only when needed. Lastly, it builds on many machines in parallel. CloudBuild offers a reliable build service in the presence of unreliable components. It aims to rapidly onboard teams and hence has to support non-deterministic build tools and specification languages that under-declare dependencies. We will outline how we addressed these challenges and characterize the operations of CloudBuild. CloudBuild has on-boarded hundreds of codebases with only man-months of effort each. Some of these codebases are used by thousands of developers. The speed ups of build and test range from 1.3× to 10×, and service availability is 99%.

References

[1]
Apache ant project. ant.apache.org.
[2]
Apache maven project. maven.apache.org.
[3]
Apache Tez. http://tez.apache.org/.
[4]
Apache zookeeper. zookeeper.apache.org.
[5]
Bazel. http://bazel.io/.
[6]
distcc. https://github.com/distcc/distcc.
[7]
Git for visualstudio. http://bit.ly/1vqcDFe.
[8]
Hadoop YARN Project. http://bit.ly/1iS8xvP.
[9]
MSBuild. http://bit.ly/1Fwk6Ez.
[10]
Nmake. http://bit.ly/1NgNzsE.
[11]
Nuget. http://bit.ly/1OdeEJA.
[12]
robocopy. http://bit.ly/1OdeEJA.
[13]
Scala build tool. www.scala-sbt.org.
[14]
Source depot. https://en.wikipedia.org/wiki/Perforce.
[15]
Team foundation version control. http://bit.ly/1ES8VLm.
[16]
TPC-DS Benchmark. http://bit.ly/1J6uDap.
[17]
TPC-H Benchmark. http://bit.ly/1KRK5gl.
[18]
VSTest. http://bit.ly/1L2nmPO.
[19]
S. Agarwal et al. Re-optimizing data parallel computing. In NSDI, 2012.
[20]
G. Ammons. Grexmk: Speeding up scripted builds. In Workshop on Dynamic Systems Analysis, 2006.
[21]
G. Ananthanarayanan, S. Kandula, A. Greenberg, I. Stoica, Y. Lu, B. Saha, and E. Harris. Reining in the outliers in map-reduce clusters using mantri. In USENIX OSDI, 2010.
[22]
A. Baumann et al. Shielding applications from an untrusted cloud with haven. In OSDI, 2014.
[23]
B. Calder et al. Windows azure storage: a highly available cloud storage service with strong consistency. In SOSP, 2011.
[24]
R. Chaiken et al. SCOPE: Easy and Efficient Parallel Processing of Massive Datasets. In VLDB, 2008.
[25]
M. Christakis, K. Leino, and W. Schulte. Formalizing and verifying a modern build language. In FM, Lecture Notes in Computer Science. 2014.
[26]
E. G. Coffman and R. L. Graham. Optimal scheduling for two-processor systems. Acta Informatica, 1(3):200--213, 1972.
[27]
M. Gliboric et al. Automated migration of build scripts using dynamic analysis and search-based refactoring. In OOPSLA, 2014.
[28]
R. Grandl, G. Ananthanarayanan, S. Kandula, S. Rao, and A. Akella. Multi-resource Packing for Cluster Schedulers. In SIGCOMM, 2014.
[29]
A. Heydon, R. Levin, and Y. Yu. Caching function calls using precise dependencies. In PLDI, 2000.
[30]
J. Hickey and A. Nogin. Omake: Designing a scalable build process. In FASE, 2006.
[31]
B. Hindman et al. Mesos: a platform for fine-grained resource sharing in the data center. In NSDI, 2011.
[32]
G. Hunt and D. Brubacher. Detours: Binary interception of win 32 functions. In Usenix Windows NT Symposium, 1999.
[33]
M. Isard. Autopilot: Automatic Data Center Management. OSR, 2007.
[34]
M. K. McKusick, K. Bostic, M. J. Karels, and J. S. Quarterman. The design and implementation of the 4.4 BSD operating system. Pearson Education, 1996.
[35]
Microsoft. Azure Service Bus. http://bit.ly/1LjqUIf.
[36]
Microsoft. Introducing Visual Studio Online. http://bit.ly/1OvpNez.
[37]
Microsoft. SMB Protocol and CIFS Protocol Overview. http://bit.ly/1Crljd7.
[38]
J. D. Morgenthaler et al. Searching for build debt: Experiences managing technical debt at google. In Workshop on Managing Technical Debt, 2012.
[39]
A. Thusoo et al. Hive- a warehousing solution over a map-reduce framework. In VLDB, 2009.
[40]
M. Vakilian et al. Automated decomposition of build targets. In ICSE, 2015.
[41]
J. Zhou et al. SCOPE: Parallel Databases Meet MapReduce. In VLDB, 2012.

Cited By

View all
  • (2025)Lightweight dynamic build batching algorithms for continuous integrationEmpirical Software Engineering10.1007/s10664-024-10555-430:2Online publication date: 8-Jan-2025
  • (2024)Efficient Incremental Code Coverage Analysis for Regression Test SuitesProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695551(1882-1894)Online publication date: 27-Oct-2024
  • (2024)Hybrid Regression Test Selection by Integrating File and Method DependencesProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695525(1557-1569)Online publication date: 27-Oct-2024
  • Show More Cited By

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '16: Proceedings of the 38th International Conference on Software Engineering Companion
May 2016
946 pages
ISBN:9781450342056
DOI:10.1145/2889160
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 May 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. CloudBuild
  2. build systems
  3. caching
  4. distributed systems
  5. operations
  6. specification languages

Qualifiers

  • Research-article

Conference

ICSE '16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)30
  • Downloads (Last 6 weeks)3
Reflects downloads up to 17 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Lightweight dynamic build batching algorithms for continuous integrationEmpirical Software Engineering10.1007/s10664-024-10555-430:2Online publication date: 8-Jan-2025
  • (2024)Efficient Incremental Code Coverage Analysis for Regression Test SuitesProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695551(1882-1894)Online publication date: 27-Oct-2024
  • (2024)Hybrid Regression Test Selection by Integrating File and Method DependencesProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695525(1557-1569)Online publication date: 27-Oct-2024
  • (2024)Mining Our Way Back to Incremental Builds for DevOps PipelinesProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3649106(48-49)Online publication date: 15-Apr-2024
  • (2024)The Classics Never Go Out of Style: An Empirical Study of Downgrades from the Bazel Build TechnologyProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639169(1-12)Online publication date: 20-May-2024
  • (2024)Just-in-Time Flaky Test Detection via Abstracted Failure Symptom Matching2024 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58944.2024.00078(741-752)Online publication date: 6-Oct-2024
  • (2023)A Literature Survey on Privacy Preserving in Image processing on CloudInternational Journal of Scientific Research in Science and Technology10.32628/IJSRST52310562(460-469)Online publication date: 1-Oct-2023
  • (2023)Propeller: A Profile Guided, Relinking Optimizer for Warehouse-Scale ApplicationsProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575727(617-631)Online publication date: 27-Jan-2023
  • (2023)Toward an efficient End-to-End test suite execution2023 IEEE 34th International Symposium on Software Reliability Engineering Workshops (ISSREW)10.1109/ISSREW60843.2023.00038(26-29)Online publication date: 9-Oct-2023
  • (2023)Finding an Optimal Set of Static Analyzers To Detect Software Vulnerabilities2023 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58846.2023.00060(463-473)Online publication date: 1-Oct-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media