All Builds Are Good With Continuous Integration Presented by: Scott Bateman Houston TechFest – August 25 th, 2007.

Slides:



Advertisements
Similar presentations
OVERVIEW TEAM5 SOFTWARE The TEAM5 software manages personnel and test data for personal ESD grounding devices. Test and personnel data may be viewed/reported.
Advertisements

Taking a Waterfall Project Agile REF: Paul Geberth GCSS-J Project Manager Establishment of an Agile Project.
The Joel Test: 12 Steps to Better Code By Tim Denton.
04b | Manage Test Execution (2 of 2) Steven Borg | Co-founder & Strategist, Northwest Cadence Anthony Borton | ALM Consultant, Enhance ALM.
Visual Studio Team System (VSTS). Richard Hundhausen Author of software development books Microsoft Regional Director Microsoft MVP (VSTS) MCT, MCSD,
Overview of Office 2003 Corinne Hoisington Central Virginia Community College.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
USING CI & CD WITH MICROSOFT SQL SERVER Tim Giorgi Senior Software Developer Northwest Evaluation
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Agile Testing with Testing Anywhere The road to automation need not be long.
Deploying Visual Studio Team System 2008 Team Foundation Server at Microsoft Published: June 2008 Using Visual Studio 2008 to Improve Software Development.
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
Improving Software Quality with Continuous Integration
Continuous Integration for Databases Learn how to automate your build and test Steve Jones Red Gate Software Part II of the Continuous Delivery for Databases.
Team System Adoption Martin Woodward Teamprise. Visual Studio Editions Easy to use, easy to learn, easy to acquire tools for hobbyists, enthusiasts, and.
Introduction to Continuous Integration Mike Roberts.
 Definitions  Background/History  Continuous Delivery › How to practice Continuous Delivery  Continuous Integration  Continuous Integration Tools.
#RefreshCache CI - Daily Builds w/Jenkins – an Open Source Continuous Integration Server Nick Airdo Community Developer Advocate Central Christian Church.
DNN LOVES JENKINS FOR CONTINUOUS INTEGRATION
By John Boal  Continuous Integration [CI] ◦ Automating the build process ◦ Build the entire system each time any new.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Continuous Integration with TeamCity Adrian Ritchie BSc, MBCS Guernsey Software Developer Forum
Created by the Community for the Community BizTalk & Build.
@benday #vslive Automated Build, Test & Deploy with TFS, ASP.NET, and SQL Server Benjamin
Craig Berntson
Creating a Maintainable Software Ecosystem Jeremy D. Miller November 27th, 2007.
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
1 Lecture 19 Configuration Management Software Engineering.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Performance Dash A free tool from Microsoft that provides some quick real time information about the status of your SQL Servers.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
Managing Change 1. Why Do Requirements Change?  External Factors – those change agents over which the project team has little or no control.  Internal.
 What are CASE Tools ?  Rational ROSE  Microsoft Project  Rational ROSE VS MS Project  Virtual Communication  The appropriate choice for ALL Projects.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
ASP.NET in Definition: 1.ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites,
South Florida Enterprise and Strategy Architects Special Interest Group (SF ESA SIG) June 19, 2007 Lawrence Port Otive LLC
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
Sean Chambers.  Senior Developer at Flagler County Schools for 5 years  Owner Hybrid Software, Educational Software  Contributor to various open source.
Continuous Integration CruiseControl.Net. Best Practices Use version control; Automate the build; Build should be self tested; Developers must commit.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Continuous Integration Make your development life simpler.
Copyright 2015, Robert W. Hasker. Continuous Inspection  Code reviews  Powerful tool  Difficult to ensure meaningful reviews take place  Static analysis.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Neil Kidd Developer Tools Technical Specialist Microsoft UK.
Microsoft Corporation. Announcement Visual Studio® Team System 2008 Enables you to Build Quality Code Be More Productive Collaborate at the Next Level.
1. ENTERPRISE AGILE TRANSFORMATION AT THE US POSTAL SERVICE MAY 24, Agile Business Solutions.
Troubleshooting Workflow 8 Raymond Cruz, Software Support Engineer.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
1 © Agitar Software, 2007 Automated Unit Testing with AgitarOne Presented by Eamon McCormick Senior Solutions Consultant, Agitar Software Inc. Presented.
Stress Free Deployments with Octopus Deploy
Project Center Use Cases Revision 2
Project Center Use Cases
Project Center Use Cases
Project Center Use Cases Revision 3
Project Center Use Cases Revision 3
Continuous Integration For Databases
Continuous Performance Engineering
X in [Integration, Delivery, Deployment]
Quality Assurance in an Agile Development Team Michelle Wu 2018 PNSQC
Your code is not just…your code
Introduction to VSTS Database Professional
SSDT, Docker, and (Azure) DevOps
Your code is not just…your code
Presentation transcript:

All Builds Are Good With Continuous Integration Presented by: Scott Bateman Houston TechFest – August 25 th, 2007

Underlying Philosophy “Continuous Integration doesn't get rid of bugs, but it does make them dramatically easier to find and remove.” -- Martin Fowler

There are Many Horror Stories  Many software projects have deficiencies around builds and deployment. No concrete knowledge what is in compiled executables Heavy dependency on a single individual Inability to reproduce or change prior builds (bug fix) No capability to produce immediate builds Risk of bad check in losing many productive hours  Code integration for projects used to take days  BuildMaster can be a full time job Quorum Experience evolved based on needs

We Learn From Experience  Software Industry Changes Rapidly 15 years ago (1992) – Windows 3.1 released Microsoft ships Visual Basic v2.0 and introduces Access In 1992… Internet Information Server (IIS) and Active Server Pages (ASP) don’t exist No image has ever been seen on Internet… just text 12 years ago (1995) – Java is announced by Sun JavaScript announced by Netscape, SourceSafe released Internet becomes widely used, IE 1.0 released 10 years ago (1997) –Intel Releases Pentium II (233, 266 & 300 MHz) IE 4.0 released, PVCS released SQL Server 6.5 launches Microsoft attack on Oracle 5 years ago (2002) –Windows XP, iPod and Xbox all hit the market.NET 1.0 released, NUnit released 2 years ago (2005) – CruiseControl.NET, NAnt released.NET 2.0 released, IE 6.0 was the latest version

Build Upon Past Successes  Just 15 years ago, this was your Windows desktop (Windows 3.0)  Continuous Integration is bound to become as common as using a source control repository

Reaping the Benefits  To benefit from this rapid change, projects must analyze available tools and methodologies  CruiseControl.NET and NAnt have been around since about 2005, NUnit is older  Although it will take some time to convert existing projects, it will be worth it  All new projects should consider using Continuous Integration (CI)

Why Use Continuous Integration?  Less time spent on builds/deployment  Lower risk of error as operations are scripted  Early notification of errors  Easy to revert to bug-free state  Constant availability of latest executables  Shorter feedback cycles  Let’s you focus on real problems, not mechanics  Makes your boss happy – saves time and $$$

Goal is to have CRISP Builds  C – Complete All components consolidated in push-button build  R – Repeatable Ability to re-generate any previous build  I – Informative Communicate pertinent information to stakeholders  S – Schedulable Must support mechanism to run unattended  P – Portable Can be run on any machine

Test Deploy Layers of Continuous Integration Monitor Build Integrate Notify Build Source Control Deployed Executable NotifyDeploy A U T O M A T E D M A N U A L Potential for Human Error

Source Control  Repository Should Contain All source code Baseline configuration files Resources and images Database scripts and code Report templates Documentation  Repository Should Not Contain Output binaries “everything you need to do your build, but not results”

Source Control  No matter what tool you choose, it is recommended to Label before any builds or major events Only check out the files you are currently working on Only check files out for a few days at a time.  If you use Microsoft SourceSafe Use the latest version of VSS Don’t use VSS and Visual Studio at the same time read more:

 Commit Builds Occur every time a change is committed Catch compile time problems Should be kept fast ­10 minutes is a good goal ­Should not take more than 1 hour Monitoring devices make it fun Allows everyone to develop with confidence Should have dedicated machine ­Can be switched easily (Portable) Monitor (CruiseControl.NET) Demo

Real-Time Status  Use monitoring devices, Web Dashboard and/or CCTray to communicate the real-time status of your build Best Practice

Integrate (NAnt)  Secondary Builds Catch run time problems Include more elaborate testing Static code analysis (FxCop) Operations that may be slower such as DB access In-depth validation of application May not be needed ­If full build/deploy is < 1 hour Kicked off by Commit Build or scheduled (daily)

Notifications  Secondary builds executed daily and send detailed to interested parties Best Practice

Integrate (NAnt)  Release (“Official”) Builds Label repository Update application version Publish results ­ / Text Message ­RSS (can replace Visual Studio start page) ­Web page Update bug tracking tool Create installer/DVD Deploy to testing environment/FTP server Demo

Frequency of Release Builds  Do not do release builds too often if you rely heavily on RDBMS  Overhead of tracking and validating DB changes Best Practice

Test (NUnit)  Catching compile-time errors promotes developer productivity  Catching run-time errors promotes tester/user productivity  The goal of software should be to solve the users’ business problems, not to make it easier to write more software  To this end, automated testing should buffer the users from integration or deployment errors Demo

Accepting Failure  Gracefully Handling Failures May require the most effort of any part of CI Very specific to project needs What do you do if your build fails? ­Commit? Secondary? Release? How severe was the type of failure ­Invalid notification address ­Still deploy for testing anyway? CI itself is made up of code ­All code has initial bugs ­All code needs to be tested

End Game “[Continuous Integration] helps break down the barriers between customers and development - barriers which I believe are the biggest barriers to successful software development.” -- Martin Fowler

What about the Database?!?  Although it is outside of the scope of this presentation, it is possible to refactor your database  2 Schools of thought Create blank DB from scripts (rare) Version DB with your code & track changes  In general, the practice is more difficult than for code  Database may have more dependencies than you and your project realize

References Martin Fowler’s Article on Continuous Integration Pragmatic Project Automation Open Source Tools Rocks Episodes (Ted Neward) (Eric Sink/Martin Woodward) (Joel Semeniuk) (Kate Gregory) These Slides and All links Posted on my Blog