Continuous Integration. CSC 440: Software Engineering Slide #1

Similar documents
Source Control Systems

Version Control with Subversion

Software configuration management

Ingeniørh. Version Control also known as Configuration Management

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Version Control Systems

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Revision control systems (RCS) and

Software Configuration Management. Context. Learning Objectives

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Theme 1 Software Processes. Software Configuration Management

Software Configuration Management. Slides derived from Dr. Sara Stoecklin s notes and various web sources.

Version Control! Scenarios, Working with Git!

Version Control Tools

CSE 374 Programming Concepts & Tools. Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn

Continuous Integration

Software Construction

Continuous Integration on System z

SVN Setup and Configuration Management

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Software Configuration Management and Continuous Integration

CSCB07 Software Design Version Control

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Software Configuration Management. Addendum zu Kapitel 13

Continuous Integration (CI)

Source Code Management/Version Control

Advanced Computing Tools for Applied Research Chapter 4. Version control

White Paper. Software Development Best Practices: Enterprise Code Portal

Continuous Integration: A case study

Delivering Quality Software with Continuous Integration

Introduction to Subversion

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

Version Control. Luka Milovanov

Continuous Delivery Workshop

BlueJ Teamwork Tutorial

Build management & Continuous integration. with Maven & Hudson

Introduction to Software Configuration Management. CprE 556 Electrical and Computer Engineering Department Iowa State University

An Introduction to Mercurial Version Control Software

TIME. Programming in the large. Lecture 22: Configuration Management. Agenda for today. About your Future. CM: The short version. CM: The long version

Global Software Change Management for PVCS Version Manager

Content. Development Tools 2(63)

Continuous Integration and Delivery at NSIDC

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Chapter 13 Configuration Management

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

CIT 470: Advanced Network and System Administration. Topics. Change Management. Change and Configuration Management

Page 1. Outline of the Lecture. What is Software Configuration Management? Why Software Configuration Management?

Introduction to Programming Tools. Anjana & Shankar September,2010

Implementing Continuous Integration Testing Prepared by:

Continuous Delivery Software-Deployments ohne graue Haare. 3. April 2012 Corsin Decurtins

An introduction to the benefits of Application Lifecycle Management

IBM Rational ClearCase, Version 8.0

Streamlining Patch Testing and Deployment

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

Configuration & Build Management

Version Control with Git. Dylan Nugent

MATLAB & Git Versioning: The Very Basics

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Software Configuration Management Best Practices for Continuous Integration

Integrated version control with Fossil SCM

Modulo II Software Configuration Management - SCM

Software Continuous Integration & Delivery

Version Control with. Ben Morgan

Version Control. Version Control

Data management on HPC platforms

Maven or how to automate java builds, tests and version management with open source tools

Miguel A. Figueroa Villanueva Xabriel J. Collazo Mojica. ICOM 5047 Capstone Miguel A. Figueroa Villanueva University of Puerto Rico Mayagüez Campus

Using Git with Rational Team Concert and Rational ClearCase in enterprise environments

S609. RDz and Source Control Management Systems

Zero-Touch Drupal Deployment

Modern practices TIE-21100/

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Improving your Drupal Development workflow with Continuous Integration

How To Manage Source Code With Git

Secret Server Qualys Integration Guide

NXTware Remote. Advanced Development and Maintenance Environment for OpenVMS and other Strategic Platforms

Version Control for Computational Economists: An Introduction

Version Control Tutorial using TortoiseSVN and. TortoiseGit

Git Basics. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 22

The Real Challenges of Configuration Management

Using Subversion in Computer Science

Chapter 13 Configuration Management

Version Uncontrolled! : How to Manage Your Version Control

Beginning with SubclipseSVN

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Transcription:

Continuous Integration CSC 440: Software Engineering Slide #1

Topics 1. Continuous integration 2. Configuration management 3. Types of version control 1. None 2. Lock-Modify-Unlock 3. Copy-Modify-Merge CSC 440: Software Engineering Slide #2

What is continuous integration? Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. CSC 440: Software Engineering Slide #3

CI Processes CSC 440: Software Engineering Slide #4

If it hurts, do it more often CSC 440: Software Engineering Slide #5

CI Practices Maintain a single source repository Keep everything in repository (configuration, docs, etc.) Automate the build Make your build self-testing Everyone commits to mainline each day Every commit should be built (integrated) Keep the build fast Test in a clone of the production environment Make it easy for anyone to get latest deliverables Everyone can see results of latest build Automate deployment CSC 440: Software Engineering Slide #6

CI Benefits Errors are found faster Fewer errors are encountered Releases become easier Releases are available for QA and comparisons Avoid last minute chaos near release date CSC 440: Software Engineering Slide #7

Open Source CI Tools Build software based on Version control system commits Scheduled times User request from IDE Can build on Multiple hardware configurations Multiple OS and middleware configs Notifies developers about Build failures Test failures https://en.wikipedia.org/wiki/comparison_of_continuous_integration_software CSC 440: Software Engineering Slide #8

http://www.programmingresearch.com/products/continuous-integration-jenkins-plug-in/

Configuration Management Configuration management refers to the process by which all artifacts relevant to your project, and the relationships between them, are stored, retrieved, uniquely identified, and modified. CSC 440: Software Engineering Slide #10

CM enables developers to Exactly reproduce the application environment, including OS version, patch level, network configuration, middleware, and all configuration files. Easily make incremental changes to any environmental aspects and deploy those changes to any or all development, testing, or production machines. View the history of configuration changes, including what the change was, who made the change, when the change was made, and why the change was made. CSC 440: Software Engineering Slide #11

Application Configuration How do you represent your configuration information? How do deployment scripts access it (DB, file, LDAP, registry, web service)? How does configuration vary between environments, applications, and versions of applications? Is configuration information such as passwords or keys properly secured? CSC 440: Software Engineering Slide #12

Testing Configuration 1. Verify all references to external services are usable. 1. Are external servers up and reachable? 2. Can we communicate with them with needed protocols? 2. Test functionality of services. 1. Can app retrieve or write information (e.g., login to database server and read data from a known table)? CSC 440: Software Engineering Slide #13

What is Version Control? Recording changes made to a file or set of files. Backups only record a snapshot of a file tree. Version control typically also records metadata: What changes were made Who made the changes Why the changes were made A version control system is like a time machine, allowing you to retrieve your file from points in time in the past CSC 440: Software Engineering Slide #14

Why Version Control? 1. To enable collaborative editing and sharing of files. 2. To maintain a history of a project, tracking what changes were made and who made them. 3. To manage multiple releases of a software project. CSC 440: Software Engineering Slide #15

Using Version Control Keep absolutely everything in version control Requirements, design docs, build instructions, tests External library versions and locations Configurations: OS, network, application Check in regularly to mainline (master, trunk, etc.) Regularly means at least every work day. Use meaningful commit messages Let s team members know what to expect. Let s you track down bugs when they appear later. CSC 440: Software Engineering Slide #16

Terms Repository Place where systems stores tree of your files, with their revision history. Client Programs that connect to repository to read or write these files. Check-in Writing changes to the repository Check-out Reading a version of your file set from the repository Working Copy User s local copy of the repository, including any changes they have not yet checked in CSC 440: Software Engineering Slide #17

No Version Control Problem: how can two users share files, but not overwrite each other s changes User A and User B each read file Spam Both edit the file in their editor User A saves his changes User B saves his changes Result: User B s version of the file is saved User A s changes are lost CSC 440: Software Engineering Slide #18

Manual Version Control Create copies of each file or directory with version numbers. Ad-hoc, still doesn t avoid devs stomping on each others changes. CSC 440: Software Engineering Slide #19

Lock-Modify-Unlock Solution: Only let one person modify a file at a time User A locks file Spam User A reads file Spam User B attempts to lock file Spam, but is denied access User A saves his changes User A unlocks file Spam. Result: User A s changes are saved. User B is prevented from accessing the file. Example: RCS CSC 440: Software Engineering Slide #20

Lock-Modify-Unlock Problems What if user A forgets to unlock the file? User B waits til user A returns to office to ask for lock or User B asks Admin to unlock file. What if user A s and user B s changes don t overlap? User A wants to edit top of file, User B the bottom User B has to wait for User A to finish What if dependencies exist between multiple files? User A modifies file Spam, User B modifies file Eggs. The class in Spam uses the interface of the class in Eggs. What if the changes are incompatible? CSC 440: Software Engineering Slide #21

Copy-Modify-Merge Solution: copy, modify, then merge changes User A checks out a working copy of Spam User B checks out a working copy of Spam Users A and B edit their own copies User A checks in Spam User B attempts to check in Spam, but receives an out of date error Solution 1: User B tells client to merge changes. Solution 2: Changes conflict (same lines were modified). User B manually merges changes, then tells client that conflict is resolved. CSC 440: Software Engineering Slide #22

Copy-Modify-Merge Advantages Users can work in parallel, without waiting Most concurrent changes can be automatically merged Time to resolve conflicts is less than time required to wait for locks CSC 440: Software Engineering Slide #23

Centralized vs. Distributed VC CSC 440: Software Engineering Slide #24

Version Control Software Open Source Software Arch CVS Git RCS Mercurial Subversion Proprietary Software Bitkeeper IBM Clearcase Perforce UNIX SCCS MS TFVC Additional client software exists for many systems GUI interfaces (WinCVS, tkcvs, tortoisecvs) Editor integration (emacs, vim) IDE integration (Eclipse, VisualStudio) CSC 440: Software Engineering Slide #25

Adding Files to a Git Repo 1. Stage: Tell git which files constitute a single change. 2. Commit: Save change to repository with a descriptive comment. CSC 440: Software Engineering Slide #26

Interacting with Remote Repos Slide #27

Git History is Nonlinear CSC 440: Software Engineering Slide #28

References 1. Martin Fowler, Continuous Integration, http://martinfowler.com/articles/continuousintegrati on.html, 2006. 2. Jez Humble and David Farley, Continuous Delivery, Addison-Wesley Professional, 2010. 3. PRQA, Continuous Integration Maturity Matrix, http://www.programmingresearch.com/products/cont inuous-integration-jenkins-plug-in/ 4. ThoughtWorks, Continuous Integration, http://www.thoughtworks.com/continuous-integration CSC 440: Software Engineering Slide #29