Continuous Integration



Similar documents
Continuous. Integration. in.net MARGIN KAWALEROWICZ CRAIG BERNTSON MANNING. Greenwich. (74 w. long.)

Two-Way Data Binding with WinJS By Marcin Kawalerowicz and Craig Berntson, authors of Continuous Integration in.net

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

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

Continuous Integration

Continuous Delivery. Alejandro Ruiz

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Software Continuous Integration & Delivery

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.

Continuous Integration: A case study

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

WHITEPAPER. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Principle #1, Agile Manifesto

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Database Build and Release will get started soon

Continuous Integration and Delivery at NSIDC

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

Continuous integration for databases using Red Gate tools

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Jenkins: The Definitive Guide

Continuous Integration Comes to China.

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

ACCELERATE DEVOPS USING OPENSHIFT PAAS

Application Release Automation (ARA) Vs. Continuous Delivery

GETTING STARTED WITH CONTINUOUS DELIVERY. Lana wcgp.co

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Software Construction

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Continuous Integration (CI) for Mobile Applications

My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies

Test Automation: A Project Management Perspective

Git Branching for Continuous Delivery

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

The Importance of Continuous Integration for Quality Assurance Teams

Modern practices TIE-21100/

Continuous Delivery: Automating the Deployment Pipeline. Solution Brief

Achieving Continuous Integration with Drupal

Continuous Delivery Workshop

Agile Delivery Framework Automation & Deployment With Puppet

Implementing Continuous Integration Testing Prepared by:

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

Continuous Integration

CONTINUOUS INTEGRATION. Introduction

Continuous Delivery. Ariel Alonso, IPC

Continuous Integration Optimizing Your Release Management Process

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

Security Automation in Agile SDLC Real World Cases

Continuous delivery Release software on-demand, not on Red Alert

DevOps. Jesse Pai Robert Monical 8/14/2015

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

Fast Feedback: Jenkins + Functional and Non-Functional Mobile App Testing Without Pulling Your Hair

A lap around Team Foundation Server 2015 en Visual Studio 2015

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous Integration & Automated Testing in a multisite.net/cloud Project

Continuous Integration Processes and SCM To Support Test Automation

Continuous integration for databases using

TeamCity A Professional Solution for Delivering Quality Software, on Time

A Hundred Days of Continuous Integration

How To Develop A System For A Car Dealership

Continuous integration for databases using Redgate tools

Software Development In the Cloud Cloud management and ALM

Mobile Development with Git, Gerrit & Jenkins

How To Benefit From An Automated Deployment

Continuous Integration: Aspects in Automation and Configuration Management

WHITEPAPER. Solving database deployments with Database Lifecycle Management

Building a Continuous Integration Pipeline with Docker

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Why continuous delivery needs devops, and why devops needs infrastructure-as-code. Sriram 25-Oct-2012

DevOps Course Content

Continuous Delivery for Force.com

Continuous Integration

HP ALM11 & MS VS/TFS2010

Continuous Delivery at SAP: From dinosaur to spaceship. Darren Hague / SAP Global IT November 1st, 2013 Public

DevOps to Enterprise Agile

Continuous Delivery and Test Automation in Agile SW projects with Robot Framework Antti Pohjonen

A Sumo Logic White Paper. Harnessing Continuous Intelligence to Enable the Modern DevOps Team

Agile Web Application Testing

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

How To Write Unit Tests In A Continuous Integration

Massively! Continuous Integration! A case study for Jenkins at cloud-scale

An introduction to the benefits of Application Lifecycle Management

INTRODUCING CONTINUOUS DELIVERY IN THE ENTERPRISE

Modern CI/CD and Asset Serving

Continuous Delivery: implementation considerations. Léon Hagenaars-Keus Edwin van Dillen

DevOps for CA Plex Automated Testing

Transcription:

How painful was your last release? Continuous Integration Marcin Kawalerowicz CEO CODEFUSION Sp. z o. o. CODEFUSION Sp. z o.o. ul. Powstańców Śląskich 25/18 45-086 Opole, Poland +48 77 54 53 312 info@codefusion.pl

After the session you will know what continuous integration (CI) is and why it s worth to use it. You will be able to build small but complete CI process. You will know what to do if the build fails.

It is an automated process that builds (link, compile, tests, analyzes, deploy, ) the software after each change in source code, to ensure its health (weather it functions correctly, follows best practices, is deployable, ) provides immediate feedback especially if it s not well.

To fight the integration hell To detect every drop in source code quality To reduce risk To increase the software development process transparency To increase the quality of software To ensure good practices and rule obedience while coding To develop faster with fewer bugs To easily create deployable software Side effect: ensure smooth start for new developers

Command line mini CI

Prepare -> Check-> Compile -> Test/deploy-> Problem? -> Wait->

Source code control Build automation CI server Feedback mechanism Unit testing framework Code analysis

Use version control no excuses!!! Vanilla CI server Everyting in repo Including: libs, tools, scripts Excluding: SDKs, Frameworks Clean project strucure

Keep everything you need in repository Organize files in groups

Script as text Under version control in the same repo Path agnostic Of course DRY don t repeat yourself (use variables, externalize configuration, use system variables, parametrize)

Is it still a duel? NAnt MSBuild OpenSource Cross-platform Good if you already know Ant Build-in to.net Framework Integrated with Visual Studio Actively developed Build in features

Transition from directed graph to taks loop

How much money do you have to spend? Do you want to pay the angle bracket tax (XML) configuration overhead? Is it supporting the tools that you need? How good is the documentation and support? Does it do what you want it to do? Does it do more than you need not just now but into the future? Is it easy to use? Is it cool and hip?

Aspekt TFS Hudson/Jenkins TeamCity CC.NET Koszt Konfiguracja Narzędzia Dokumentacja Funkcje Dodatki Łatwość użycia Cool

Bamboo Anthil Cruise Go CI is about what people do, not about what tools they use

Manual / Forced Continuous Integration Poll vs. Push (using hooks) Rolling build (every x check-ins or x seconds) Scheduled (Daily / Nightly / Weekly / ) Triggered by another build

make your unit tests fast and unambiguous have your unit tests as few dependencies as possible let errors drive your unit tests mock external interfaces

Tools: Selenium (Web) White Framework (Win, Silverlight) Fitnesse (Acceptance) Visual Studio UI Automation (Web, Win)

Not everything considerable for CI Other System Functional Integration CI Unit

perform the quick tests at the beginning break the build after first failing test Unit tests Integration tests System tests Other tests

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.

FxCop / VS Code Analysis IL code analyze FxCop and Visual Studio Code Analysis Extending FxCop CI integration

StyleCop C# code analyze Extending StyleCop CI integration

give information about any decrease of your code quality be quick be able to provide information in diverse art point to the specific place that caused this deterioration be accessible to any team member, anytime

Tray notifiers Alternative notifiers Email Sms Instant messaging Gadgets

no one pulls anything from source control. The source is broken so no one should be interested in broken code someone should jump right in to fix the problem, preferably the person that caused it, but volunteers are welcome all the commits to the repository are withheld until the build is fixed. If you push good code into a spoiled repository your code might get the smell too

Why not? Database as script (in repo) Automatic DB creation Automatic DB migration and seeding Parameter externalization Integration with every change

Liquibase Dbdeploy MIGRATEdb Dbmaintain AutoPatch

Generating documentation (Sandcastle) XML- Dokumentationskommentare in Quellcode Kompiler XML Dokumentation Sandastle CHM/HTML-Dokumentation Deployment (Wix, MSDeploy) UI automation

Getting x last build to success Sunny / Clouded / Storming in Jenkins

When: Code base / test no. increases -> build time increases Teams growth No. of projects grows Then Create targeted builds (dev build, qa build) Write fast unit tests Smaller teams with local integration servers Modularize the code base Scale hardware Add more build agents Parallelize

Quick integration = more frequent integration = high quality source code It should take no more then 5-10 minutes. Scaling Continuous Integration, R. Owen Rogers, Lecture Notes in Computer Science, 2004, Volume 3092, Extreme Programming and Agile Processes in Software Engineering, Pages 68-76

Software Developer + IT Professional = Build Master DevOps

Continuous delivery Deployment pipeline Commit stage Acceptance stage Self serviced deployments Push button releases

CI

Marcin Kawalerowicz CEO CODEFUSION Sp. z o. o. www.codefusion.pl marcin@kawalerowicz.net Blog: www.iprogrammable.com LinkedIn: www.linkedin.com/in/marcinkawalerowicz Book: www.amazon.com/dp/1935182552 CODEFUSION Sp. z o.o. ul. Powstańców Śląskich 25/18 45-086 Opole +48 77 54 53 312 info@codefusion.pl