Cloudbuild: Microsoft's Distributed and Caching Build Service

Total Page:16

File Type:pdf, Size:1020Kb

Cloudbuild: Microsoft's Distributed and Caching Build Service CloudBuild: Microsoft’s Distributed and Caching Build Service Hamed Esfahani, Jonas Fietz, Qi Ke, Alexei Kolomiets, Erica Lan, Erik Mavrinac, Wolfram Schulte, Newton Sanches, Srikanth Kandula Microsoft ABSTRACT ● execuTe builds, Tests, and relaTed Tasks as fasT as possible, ● _ousands of Microso engineers build and TesT hundreds of so- on-board as many producT groups as eòorTlessly as possible, ● ware products several Times a day.IT is essenTial ThaTThis con- inTegraTe inTo exisTing workows, ● Tinuous inTegraTion scales, guaranTees shorT feedback cycles, and ensure high reliabiliTy of builds and Their necessary infras- funcTions reliably wiTh minimal human inTervenTion. _is paper TrucTure, ● describes CvÕn­BnTv­, The build service infrasTrucTure developed reduce costs by avoiding separaTe build labs per organizaTion, ● wiThin Microso over The lasT few years. CvÕn­BnTv­ is responsi- leverage Microso’s resources in The cloud for scale and elas- ble for all aspects of a conTinuous inTegraTion workow, including TiciTy, and lasTly ● builds, TesT and code analysis, as well as drops, package and sym- consolidaTe disparaTe engineering eòorts inTo one common bol creaTion and sTorage. CvÕn­BnTv­ supports mulTiple build lan- service. guages as long as They fulûll a coarse grained, ûle IO based conTracT. We found iT diõculTTo simulTaneously saTisfy These requirements. CvÕn­BnTv­ uses conTenT based caching To run build-relaTed Tasks MosT build labs, for insTance, have only a few dependencies on oTher only when needed.LasTly, iT builds on many machines in parallel. sysTems; They connecTTo one version conTrol sysTem or build drop CvÕn­BnTv­ oòers a reliable build service in The presence of un- sTorage soluTion. To avoid separaTe build labs,CvÕn­BnTv­ sup- reliable components.IT aims To rapidly onboard Teams and hence ports The union of all lab dependencies and workows. However, The has To supporT non-deTerminisTic build Tools and speciûcaTion lan- consequenT inTeroperabiliTy issues can lead To lower reliabiliTy. As guages ThaT under-declare dependencies. We will ouTline how we ad- anoTher insTance of conicTing requirements, producT groups have dressed These challenges and characTerize The operaTions of CvÕn­- opTimized Their builds (and build labs) over many years, oen ex- BnTv­. CvÕn­BnTv­ has on-boarded hundreds of codebases wiTh ploiTing Their parTicular producT archiTecTure and workow To opTi- only man-monThs of eòorT each. Some of These codebases are used mize for incremenTal and parallel builds. Since CvÕn­BnTv­ oòers by Thousands of developers. _e speed ups of build and TesT range a generic cloud-based soluTion across The various producT groups, from Ï.k× To Ϫ×, and service availabiliTy is ì. our currenT speedup improvements are less dramaTic (noT Ϫª× for example) relaTive To The highly opTimized cusTom sysTems. Keywords When archiTecTing CvÕn­BnTv­, we had To make a crucial de- Build SysTems,CloudBuild, DisTribuTed SysTems, Caching, Speciû- cision. We found ThaT exisTing build Tools and speciûcaTion lan- caTion Languages, OperaTions guages were unsuiTable for cached and parallel execuTion. In parTic- ular, The languages would under-specify dependencies and The Tools 1. INTRODUCTION produced non-deTerminisTic ouTputs.Hence, while single machine (or single Threaded) execuTion would run correcTly, disTribuTed ex- Microso is rapidly adopTing an agile meThodology To enable a ecuTion and caching of Task ouTputs could lead To unpredicTable be- much fasTer delivery cadence of days To weeks. For insTance, Oõce havior or limiTed speedup. A clean soluTion would be To design a kC, visual STudio Online and SQL Azure have release cycles ranging new build speciûcaTion language, rewriTe all build speciûcaTions in from k monThs To k weeks. On The exTreme end, Bing’s websiTe ships This language and force Tools To respecT addiTional consTraints. Such several Times a day. eòorts are underway [, }9]. CvÕn­BnTv­, however, is our quick Delivering rapidly requires ThaT builds, which are aTThe core of soluTion. _aT is, here we show how To onboard exisTing speciûca- The inner loop of any engineering sysTem, are fasT and reliable. _is Tion languages (and Tools) on To a cloud-based parallel and cached challenge has given us an opporTuniTy To design a new in-house in- build sysTem. _e key advanTage wiTh This choice is The speed of on- frasTrucTure for conTinuous inTegraTion known as CvÕn­BnTv­.Its boarding. Builds and Tests can be sped up and disparaTe labs can be design was moTivaTed by These needs: consolidaTed inTo The cloud quickly. We also found CvÕn­BnTv­ To 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 be able To cover a wide range of Tools and speciûcaTions. _e cosT, for profit or commercial advantage and that copies bear this notice and the full citation however, is The raTher heurisTic naTure of CvÕn­BnTv­: our goal is on the first page. Copyrights for components of this work owned by others than the noTTo funcTion correcTly in every possible seTTing (of speciûcaTion author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or and Tool behavior). We miTigaTe This wiTh cusTomer educaTion and republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]. hardening of CvÕn­BnTv­ To cover frequenTly recurring issues. ICSE ’16 Companion, May 14 - 22, 2016, Austin, TX,USA We believe ThaT our design decision has been successful. CvÕn­- © 2016 Copyright held by the owner/author(s). Publication rights licensed to ACM. BnTv­ is currenTly being used by more Than ªªª developers in ISBN 978-1-4503-4205-6/16/05. $15.00 Bing,Exchange, SQL, OneDrive, Azure and Oõce.IT execuTes more DOI: hTTp://dx.doi.org/Ϫ.ÏÏ/}ÊÊÏCª.}ÊÊ}}} Than }ªK builds per day on up To ϪK machines spread over several daTa cenTers. Build and TesT speeds Typically improved by Ï.k Times To Microso’s engineering fabric. Ϫ Times compared To earlier lab based sysTems, susTaining an avail- In The resT of This paper, we describe The design of CvÕn­- abiliTy of .ì. ReliabiliTy, deûned as The number of requests ThaT BnTv­ (§}–§k). ExperienTial anecdoTes are oòered ThroughouT The are served wiThouT a CvÕn­BnTv­ inTernal error, is beTTer Than ì. design secTions To clarify The various design choices. We Then char- CvÕn­BnTv­ connects wiTh Three diòerenT version conTrol and four acTerize some operaTional aspects of The CvÕn­BnTv­ service (§.Ï) binary sTorage sysTems. REST APIs and Azure’s Service Bus [k] are and share onboarding and live-siTe experiences (§.}–§.k). We con- used for inTegraTion inTo mulTiple workow sysTems. clude wiTh a discussion of relaTed work (§) and lessons learnT. While CvÕn­BnTv­’s service design follows exisTing designs for large scale daTa-parallel sysTems [k,Ê, Ï], CvÕn­BnTv­’s build en- 2. PRIMER ON BUILD SERVICES gine is unique in ThaT iT allows The execuTion of arbiTrary build lan- Today, build sysTems such as Make, Maven, Graddle and MSBuild guages and Tools, even in The presence of under-speciûed dependen- execuTe on one machine, Typically The developers’ deskTops or lap- cies and non-deTerminisTic Tools. Tops. As The size of code bases grow, These Tools can Take several Given a build requesT,CvÕn­BnTv­ evaluaTes build speciûca- hours for a full build. DelTa builds, ThaT is, rebuilding aer changes, Tions, Typically expressed in Make or MsBuild ûles, To infer projecT- are fasTer. However, conTinuous inTegraTion workows oen require To-projecT level dependencies. _is means ThaT CvÕn­BnTv­’s uniT packaging binaries and/or running exhausTive baTTeries of Tests. of scheduling is a coarse grained projecT. While noT as ûne grained To speed up The build workow, we noTe ThaTThere is subsTanTial as oTher sysTems like Google’s Bazel [], The approach allows greaTer opporTuniTy To parallelize. While dependencies do exisT, They only reuse of pre-exisTing build speciûcaTions, wiThouT having To compre- form a parTial order over The build Tasks and many build Tasks are hend all The runTime semanTics of The underlying build Tools. unordered wiTh respecTTo each oTher. As a consequence various ef- CvÕn­BnTv­ can deTermine wheTher To execuTe a given projecT forts are under way To provide mulTi-Threaded builds and disTribuTe or To reuse ouTputs capTured during an earlier execuTion, and sTored The build Tasks over many nodes. in a sysTem-wide cache. _e deTerminaTion is based on The evalua- FurThermore, There is an opporTuniTy To reuse The ouTputs of Tion of The perTinenT source ûles and parenT projects which is sum- previous builds, similar To delTa builds. Build reuse arises funda- marized inTo a cache lookup key for The projecT. _e approach To menTally due To highly modularized soware engineering pracTices. compuTe This key ensures ThaTThe build ouTpuT is deTerminisTic and Teams of developers work on speciûc components and can reuse consisTenT wiTh oTher projects in The same build. The laTesT binaries for The resT. Even across source conTrol branches, Finally CvÕn­BnTv­ schedules work, i.e. The Tasks for each There is a high likelihood of sharing due To The use of shared libraries projecTThaT needs To be builT, in a locaTion-aware manner over mul- for commonly used or imporTanT funcTionaliTy. Tiple worker machines. LocaliTy here implies Two Things: fresh- In This conTexT,CvÕn­BnTv­ oòers a disTribuTed and caching ness of The cache aTThe machine as well as The freshness of Their build service. We oòer a quick summary of relevanT background. enlisTmenT from source conTrol. WiThouT This localiTy, The build- preparaTion-Time To conûgure The machine wiTh The righT seT of 2.1 Source Control SDKs and sources before iT can parTicipaTe in The build will be sub- sTanTial.
Recommended publications
  • Ironpython in Action
    IronPytho IN ACTION Michael J. Foord Christian Muirhead FOREWORD BY JIM HUGUNIN MANNING IronPython in Action Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> IronPython in Action MICHAEL J. FOORD CHRISTIAN MUIRHEAD MANNING Greenwich (74° w. long.) Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. Sound View Court 3B fax: (609) 877-8256 Greenwich, CT 06830 email: [email protected] ©2009 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15% recycled and processed without the use of elemental chlorine.
    [Show full text]
  • Teamcity 7.1 Documentation.Pdf
    1. TeamCity Documentation . 4 1.1 What's New in TeamCity 7.1 . 5 1.2 What's New in TeamCity 7.0 . 14 1.3 Getting Started . 26 1.4 Concepts . 30 1.4.1 Agent Home Directory . 31 1.4.2 Agent Requirements . 32 1.4.3 Agent Work Directory . 32 1.4.4 Authentication Scheme . 33 1.4.5 Build Agent . 33 1.4.6 Build Artifact . 34 1.4.7 Build Chain . 35 1.4.8 Build Checkout Directory . 36 1.4.9 Build Configuration . 37 1.4.10 Build Configuration Template . 38 1.4.11 Build Grid . 39 1.4.12 Build History . 40 1.4.13 Build Log . 40 1.4.14 Build Number . 40 1.4.15 Build Queue . 40 1.4.16 Build Runner . 41 1.4.17 Build State . 41 1.4.18 Build Tag . 42 1.4.19 Build Working Directory . 43 1.4.20 Change . 43 1.4.21 Change State . 43 1.4.22 Clean Checkout . 44 1.4.23 Clean-Up . 45 1.4.24 Code Coverage . 46 1.4.25 Code Duplicates . 47 1.4.26 Code Inspection . 47 1.4.27 Continuous Integration . 47 1.4.28 Dependent Build . 47 1.4.29 Difference Viewer . 49 1.4.30 Guest User . 50 1.4.31 History Build . 51 1.4.32 Notifier . 51 1.4.33 Personal Build . 52 1.4.34 Pinned Build . 52 1.4.35 Pre-Tested (Delayed) Commit . 52 1.4.36 Project . 53 1.4.37 Remote Run . ..
    [Show full text]
  • Q1 Where Do You Use C++? (Select All That Apply)
    2021 Annual C++ Developer Survey "Lite" Q1 Where do you use C++? (select all that apply) Answered: 1,870 Skipped: 3 At work At school In personal time, for ho... 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES At work 88.29% 1,651 At school 9.79% 183 In personal time, for hobby projects or to try new things 73.74% 1,379 Total Respondents: 1,870 1 / 35 2021 Annual C++ Developer Survey "Lite" Q2 How many years of programming experience do you have in C++ specifically? Answered: 1,869 Skipped: 4 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 7.60% 142 3-5 years 20.60% 385 6-10 years 20.71% 387 10-20 years 30.02% 561 >20 years 21.08% 394 TOTAL 1,869 2 / 35 2021 Annual C++ Developer Survey "Lite" Q3 How many years of programming experience do you have overall (all languages)? Answered: 1,865 Skipped: 8 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 1.02% 19 3-5 years 12.17% 227 6-10 years 22.68% 423 10-20 years 29.71% 554 >20 years 34.42% 642 TOTAL 1,865 3 / 35 2021 Annual C++ Developer Survey "Lite" Q4 What types of projects do you work on? (select all that apply) Answered: 1,861 Skipped: 12 Gaming (e.g., console and..
    [Show full text]
  • Programming with Windows Forms
    A P P E N D I X A ■ ■ ■ Programming with Windows Forms Since the release of the .NET platform (circa 2001), the base class libraries have included a particular API named Windows Forms, represented primarily by the System.Windows.Forms.dll assembly. The Windows Forms toolkit provides the types necessary to build desktop graphical user interfaces (GUIs), create custom controls, manage resources (e.g., string tables and icons), and perform other desktop- centric programming tasks. In addition, a separate API named GDI+ (represented by the System.Drawing.dll assembly) provides additional types that allow programmers to generate 2D graphics, interact with networked printers, and manipulate image data. The Windows Forms (and GDI+) APIs remain alive and well within the .NET 4.0 platform, and they will exist within the base class library for quite some time (arguably forever). However, Microsoft has shipped a brand new GUI toolkit called Windows Presentation Foundation (WPF) since the release of .NET 3.0. As you saw in Chapters 27-31, WPF provides a massive amount of horsepower that you can use to build bleeding-edge user interfaces, and it has become the preferred desktop API for today’s .NET graphical user interfaces. The point of this appendix, however, is to provide a tour of the traditional Windows Forms API. One reason it is helpful to understand the original programming model: you can find many existing Windows Forms applications out there that will need to be maintained for some time to come. Also, many desktop GUIs simply might not require the horsepower offered by WPF.
    [Show full text]
  • Vmware Carbon Black Cloud User Guide
    VMware Carbon Black Cloud User Guide Modified on 17 September 2021 VMware Carbon Black Cloud VMware Carbon Black Cloud User Guide You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ VMware, Inc. 3401 Hillview Ave. Palo Alto, CA 94304 www.vmware.com © Copyright 2011-2021 VMware, Inc. All rights reserved. Copyright and trademark information. VMware, Inc. 2 Contents Preface 9 Related Documentation 9 Copyrights and notices 10 Contacting VMware Carbon Black Support 13 1 Dashboard 14 Widget Definitions List 14 Customizing the Dashboard 16 Export Data 17 2 Alerts 18 View Alert Details 18 Alert Types 19 Alert and Report Severity 20 Alert ID, Event ID, and Threat ID 21 Group Alerts 21 Dismissing Alerts 22 Search Basics 23 Alert Triage 24 Investigating Alerts 24 True and False Positives 25 Take Action on Alerts 26 Visualizing Alerts 26 Alert Origin, Behaviors, and TTPs 27 3 Investigate 29 Investigate - Processes 30 Process Analysis 31 Investigate - Enriched Events 33 Investigating Script-Based Attacks 35 Add Query to Threat Report 37 4 Live Query 39 Run a Live Query 39 View Query Results 40 5 Enforce 42 Managing Watchlists 42 VMware, Inc. 3 VMware Carbon Black Cloud User Guide Subscribe to a Curated Watchlist 42 Watchlist Alert Options 43 Build Custom Watchlists 43 Tuning Your Watchlists 44 Tune Your Watchlist at the Report Level 44 Tune Your Report at the IOC Level 44 Managing Policies 44 Predefined Policies 45 Creating Policies 45 Set a Ransomware Policy Rule 46 General Policy Settings 47
    [Show full text]
  • Microsoft / Vcpkg
    Microsoft / vcpkg master vcpkg / ports / Create new file Find file History Fetching latest commit… .. abseil [abseil][aws-sdk-cpp][breakpad][chakracore][cimg][date][exiv2][libzip… Apr 13, 2018 ace Update to ACE 6.4.7 (#3059) Mar 19, 2018 alac-decoder [alac-decoder] Fix x64 Mar 7, 2018 alac [ports] Mark several ports as unbuildable on UWP Nov 26, 2017 alembic [alembic] update to 1.7.7 Mar 25, 2018 allegro5 [many ports] Updates to latest Nov 30, 2017 anax [anax] Use vcpkg_from_github(). Add missing vcpkg_copy_pdbs() Sep 25, 2017 angle [angle] Add CMake package with modules. (#2223) Nov 20, 2017 antlr4 [ports] Mark several ports as unbuildable on UWP Nov 26, 2017 apr-util vcpkg_configure_cmake (and _meson) now embed debug symbols within sta… Sep 9, 2017 apr [ports] Mark several ports as unbuildable on UWP Nov 26, 2017 arb [arb] prefer ninja Nov 26, 2017 args [args] Fix hash Feb 24, 2018 armadillo add armadillo (#2954) Mar 8, 2018 arrow Update downstream libraries to use modularized boost Dec 19, 2017 asio [asio] Avoid boost dependency by always specifying ASIO_STANDALONE Apr 6, 2018 asmjit [asmjit] init Jan 29, 2018 assimp [assimp] Fixup: add missing patchfile Dec 21, 2017 atk [glib][atk] Disable static builds, fix generation to happen outside t… Mar 5, 2018 atkmm [vcpkg-build-msbuild] Add option to use vcpkg's integration. Fixes #891… Mar 21, 2018 atlmfc [atlmfc] Add dummy port to detect atl presence in VS Apr 23, 2017 aubio [aubio] Fix missing required dependencies Mar 27, 2018 aurora Added aurora as independant portfile Jun 21, 2017 avro-c
    [Show full text]
  • NET Hacking & In-Memory Malware
    .NET Hacking & In-Memory Malware Shawn Edwards Shawn Edwards Cyber Adversarial Engineer The MITRE Corporation Hacker Maker Learner Take stuff apart. Change it. Put Motivated by an incessant Devoted to a continuous effort it back together. desire to create and craft. of learning and sharing knowledge. Red teamer. Adversary Numerous personal and emulator. professional projects. B.S. in Computer Science. Adversary Emulation @ MITRE • Red teaming, but specific threat actors • Use open-source knowledge of their TTPs to emulate their behavior and operations • Ensures techniques are accurate to real world • ATT&CK (Adversarial Tactics Techniques and Common Knowledge) • Public wiki of real-world adversary TTPs, software, and groups • CALDERA • Modular Automated Adversary Emulation framework Adversary Emulation @ MITRE • ATT&CK • Adversarial Tactics Techniques and Common Knowledge • Public wiki of real-world adversary TTPs, software, and groups • Lets blue team and red team speak in the same language • CALDERA • Modular Automated Adversary Emulation framework • Adversary Mode: • AI-driven “red team in a box” • Atomic Mode: • Define Adversaries, give them abilities, run operations. Customize everything at will. In-Memory Malware • Is not new • Process Injection has been around for a long time • Typically thought of as advanced tradecraft; not really • Surged in popularity recently • Made easier by open-source or commercial red team tools • For this talk, only discuss Windows malware • When relevant, will include the ATT&CK Technique ID In-Memory
    [Show full text]
  • Cake Documentation Release 0.1.21
    Cake Documentation Release 0.1.21 Patrik Svensson January 27, 2015 Contents 1 User documentation 3 1.1 Introduction...............................................3 1.2 How does it work?............................................3 1.3 Getting started..............................................5 1.4 Extensibility...............................................7 1.5 Contributors...............................................7 1.6 Contribution Guidelines.........................................8 1.7 AppVeyor integration..........................................9 2 Api documentation 13 2.1 API documentation............................................ 13 i ii Cake Documentation, Release 0.1.21 Cake (C# Make) is a build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages. • GitHub: https://github.com/cake-build/cake • NuGet: https://www.nuget.org/packages/Cake Contents 1 Cake Documentation, Release 0.1.21 2 Contents CHAPTER 1 User documentation 1.1 Introduction 1.1.1 What is Cake? Cake is a build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages. 1.1.2 Goals The goal of Cake is to be a first class alternative to those who want to write their build scripts in C# instead of Ruby, F# or Powershell. 1.2 How does it work? Cake uses a dependency based programming model just like Rake, FAKE and similar build automation systems where you declare tasks and the dependencies between those. 1.2.1 Tasks To define a new task, use the Task-method. Task("A") .Does(() => { }); RunTarget("A"); 1.2.2 Dependencies To add a dependency on another task, use the IsDependentOn-method. 3 Cake Documentation, Release 0.1.21 Task("A") .Does(() => { }); Task("B") .IsDependentOn("A"); .Does(() => { }); RunTarget("B"); This will first execute target A and then B as expected.
    [Show full text]
  • Automating Builds Using Msbuild Guy Smith-Ferrier
    AutomatingAutomating BuildsBuilds UsingUsing MSBuildMSBuild GuyGuy SmithSmith--FerrierFerrier [email protected]@guysmithferrier.com Blog:Blog: http://http://www.guysmithferrier.comwww.guysmithferrier.com ©Courseware Online 1 AboutAbout…… z Author of .NET Internationalization – Visit http://www.dotneti18n.com to download the complete source code z 25% of 4 Chaps From Blighty – http://www.4chapsfromblighty.com – Podcasts and blog about development issues and the UK developer community ©Courseware Online 2 AgendaAgenda z MSBuild Fundamentals z Items, Transforming, Metadata z Standard Tasks z Logging z MSBuild Task Libraries z Post Build Steps (inc. FxCop) z Custom Tasks z Building VS2003 Projects ©Courseware Online 3 AvailabilityAvailability z MSBuild is included in the .NET Framework 2.0 SDK – Visual Studio 2005 is not required ©Courseware Online 4 InformationInformation SourcesSources z Channel 9 MSBuild Home Page – http://channel9.msdn.com/wiki/default.aspx/MSBuild.HomePage – Nant Equivalents To MSBuild tasks z http://channel9.msdn.com/wiki/default.aspx/MSBuild.EquivalentTasks z MSBuild Forum – http://forums.microsoft.com/msdn/showforum.aspx?forumid=27&siteid=1 z MSBuild Team Blog – http://blogs.msdn.com/msbuild z Deploying .NET Applications with MSBuild and ClickOnce, Apress, Sayed Y. Hashimi and Sayed Ibrahim Hashimi, ISBN: 1-59059-652-8 z The Build Master, Addison-Wesley, Vincent Maraia, ISBN 0-321-33205-9 – Microsoft's Software Configuration Management Best Practices ©Courseware Online 5 MSBuildMSBuild FundamentalsFundamentals z Properties – PropertyGroups z Items – ItemGroups z Tasks – Targets ©Courseware Online 6 MSBuildMSBuild FundamentalsFundamentals (continued)(continued) PropertyGroup Property Property Property Property Target Task Task Task Task ItemGroup Item Item Item Item ©Courseware Online 7 PropertiesProperties z Properties are name value pairs – "The variables of a build script" – e.g.
    [Show full text]
  • Ironruby Shines in New .NET Development Tool
    Microsoft .NET Customer Solution Case Study IronRuby Shines in New .NET Development Tool Overview “Ruby developers can now access the enterprise-level Country or Region: Australia Industry: Software development features of the .NET environment such as managed code and standard APIs, which allow them to develop Developer Profile Software developer James Crisp is a software once and then run it anywhere.” Senior Consultant and the .NET Lead at Nick Hodge, Professional Geek, Microsoft Australia the Sydney, Australia office of global IT consultancy ThoughtWorks. Software developer James Crisp was looking for a way to Business Situation automate software builds while working in Microsoft Visual Crisp wanted to automate software Studio and the .NET Framework, but he found existing XML- builds while working in Microsoft Visual Studio and the .NET Framework, based build tools inflexible and hard to scale for some of his but found existing XML-based build larger projects. He decided to create nRake – a .NET-compatible tools inflexible and hard to scale. version of Rake which is a popular build tool based on the Ruby Solution programming language. Using IronRuby – Microsoft’s Crisp developed a build tool called nRake, which uses IronRuby, a implementation of Ruby for the .NET environment – helped Microsoft implementation of the Crisp take advantage of Ruby’s intelligence and versatility, popular Ruby programming language. allowing software builds to be specified in a way that was easier Benefits to understand and more scalable. IronRuby helps connect the • nRake makes software builds easier to specify and more scalable. open source and Microsoft development communities, making it • Developers have a more powerful easier for Ruby developers to use .NET’s enterprise-class .NET development tool.
    [Show full text]
  • ALM Rangers Home Page – Dependency Management with Nuget – Foreword
    Visual Studio ALM Rangers Home Page – http://aka.ms/vsarmsdn Dependency Management with NuGet – Foreword The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, you should not interpret this to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication. This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. Microsoft grants you a license to this document under the terms of the Creative Commons Attribution 3.0 License. All other rights are reserved. 2014 Microsoft Corporation. Microsoft, Active Directory, Excel, Internet Explorer, SQL Server, Visual Studio, and Windows are trademarks of the Microsoft group of companies. All other trademarks are property of their respective owners. Page 2 of 22 Dependency Management with NuGet – Foreword Table of Contents Foreword ............................................................................................................................................................................................................................................ 4 Introduction .....................................................................................................................................................................................................................................
    [Show full text]
  • Automating Builds with Msbuild and Team Foundation Server
    Software Engineer at InterKnowlogy Contact Information E-mail: [email protected] Blog: http://blogs.InterKnowlogy.com/JohnBowen More info on InterKnowlogy: www.InterKnowlogy.com Why use build automation? MSBuild basics Running MSBuild Build execution and extensibility Team Foundation Build components of TFS Creating and running Team Builds Advanced MSBuild concepts Build multiple Run unit tests configurations Generate Copy binaries from documentation other solutions Send email Directly deploy/install notifications Execute SQL scripts Automatic versioning Perform static code Backup older builds analysis Sign/encrypt files The Microsoft Build Engine (MSBuild) is the new build platform for Microsoft and Visual Studio 2005 Can be run as independent command line tool Enables developers to build products in clean build lab environments where Visual Studio is not installed Uses XML project file format to describe build process Provides similar functionality to NAnt open-source tool Properties ◦ Key/value pairs that can be used to configure builds Items ◦ Inputs into the build system that are grouped into item collections based on their user-defined collection names Tasks ◦ A unit of executable code used by MSBuild to perform atomic build operations Targets ◦ Group tasks together in a particular order and allow sections of the build process to be called from the command line Visual Studio 2005 project file Builds can be started inside Visual Studio or from the command line By default output is logged to the
    [Show full text]