Build Processes and Continuous Integration Automating Build Processes SoftUni Team Technical Trainers http://softuni.bg Software University Table of Contents Source Code Building Build Processes Continuous Integration JetBrains TeamCity 2 Build Automation Software Builds What does it mean to build software? The process of compiling and assembling the system's modules to obtain the final product Build activities can also include: Getting the latest version from the source control repository Linking external resources Executing unit tests Creating installation packages 4 Build Processes in Visual Studio You can create custom build processes Used in continuous integration environments Contain a set of steps to execute when building the project Build processes resolve dependencies across projects Build processes can prevent team members from “breaking the build” Each commit in the source control repository goes through the build process first If it fails, it is not sent to the repository https://msdn.microsoft.com/en-us/library/ms181715.aspx 5 Creating a Build Definition Connect Visual Studio’s Team Explorer to a source control system Open Builds in Team Explorer Click New Build Definition Use the UI to create your own build process definition Specify the steps which will be performed after VS starts to build your project Specify output file locations https://msdn.microsoft.com/en-us/library/ms181716.aspx 6 Continuous Integration JetBrains TeamCity Continuous Integration (CI) Continuous integration (CI) Automating the build and integration process Build the entire system each time any new code is checked in the source control repository Run all the automated tests for each build What does "continuous" mean? Ideally – build it after every check-in Practically – for larger systems, every 1-2 hours Or at least a couple of times a day 8 Components of the CI System Build server – separate machine (or pool) Source control repository Subversion, Team Foundation Server (TFS), etc. Automated build system Ant, NAnt, MSBuild, Cruise Control, TFS, etc. Status indicators / notifications to make problems visible right away Email notifications / tray build notify utilities Public build status monitors 9 Continuous Integration Systems CruiseControl Very popular, powerful, open source CI tool Extensible, plug-in based, large community CruiseControl.NET .NET clone of CruiseControl Team Foundation Server (TFS) TFS provides build-in continuous integration JetBrains TeamCity 10 The CI Process 11 JetBrains TeamCity Live Demo Summary Source Code Building Build Processes Continuous Integration JetBrains TeamCity 13 Build Processes and Continuous Integration ? http://softuni.org/courses/high-quality-code License This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons AttributionNonCommercial-ShareAlike 4.0 International" license Attribution: this work may contain portions from "Fundamentals of Computer Programming with C#" book by Svetlin Nakov & Co. under CC-BY-SA license "C# Part I" course by Telerik Academy under CC-BY-NC-SA license 15 Free Trainings @ Software University Software University Foundation – softuni.org Software University – High-Quality Education, Profession and Job for Software Developers softuni.bg Software University @ Facebook facebook.com/SoftwareUniversity Software University @ YouTube youtube.com/SoftwareUniversity Software University Forums – forum.softuni.bg