Continuous Integration

Similar documents
jenkins, drupal & testing automating every phing! miggle

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Continuous Integration (CI)

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

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Software Configuration Management and Continuous Integration

The Importance of Continuous Integration for Quality Assurance Teams

Implementing Continuous Integration Testing Prepared by:

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

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

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

Continuous Integration Multi-Stage Builds for Quality Assurance

Continuous Integration

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

StriderCD Book. Release 1.4. Niall O Higgins

Meister Going Beyond Maven

Finally, an agile test strategy (that works)! AS OW Test Model, Objectware

How To Do Continuous Integration

Accelerate Software Delivery

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic

Continuous Integration Processes and SCM To Support Test Automation

Flexible Engineering Process Automation Process: Continuous Integration & Test

Build management & Continuous integration. with Maven & Hudson

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

SOFTWARE DEVELOPMENT BASICS SED

Continuous Integration

Software Development In the Cloud Cloud management and ALM

Jenkins on Windows with StreamBase

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Hudson Continous Integration Server. Stefan Saasen,

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

Software Continuous Integration & Delivery

Continuous Integration/Testing and why you should assume every change breaks your code

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

DevOps for the Mainframe

Best Overall Use of Technology. Jaspersoft

Automated build service to facilitate Continuous Delivery

Continuous integration for databases using Redgate tools

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

Continuous Integration and Delivery at NSIDC

In depth study - Dev teams tooling

Continuous integration for databases using

A central continuous integration platform

Delivering Quality Software with Continuous Integration

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Security Automation in Agile SDLC Real World Cases

Continuous Integration For Fusion Middleware

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

Continuous Integration

Fundamentals of Continuous Integration

Web Developer Toolkit for IBM Digital Experience

Git Branching for Continuous Delivery

Software Configuration Management Best Practices for Continuous Integration

Continuous Integration on System z

@tobiastrelle. codecentric AG 1

Software configuration management

Fail early, fail often, succeed sooner!

Continuous integration End of the big bang integration era

ACCELERATE DEVOPS USING OPENSHIFT PAAS

Java Software Quality Tools and techniques

Servers. Servers. NAT Public Subnet: /20. Internet Gateway. VPC Gateway VPC: /16

Continuous Integration

How Silk Central brings flexibility to agile development

Continuous Delivery: Automating the Deployment Pipeline. Solution Brief

Continuous Integration

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

Building a Continuous Integration Pipeline with Docker

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

CloudBees Continuous Integration and Test with Appvance Enterprise August 28, 2013 Frank Cohen, (408)

Software Construction

Part I. OpenCIT Server

Urbancode Deploy Overview

The AppSec How-To: Achieving Security in DevOps

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Continuous Integration and Delivery. manage development build deploy / release

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

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

Mastering Continuous Integration with Jenkins

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

BUSMASTER An Open Source Tool

Quartz.Net Scheduler in Depth

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

Transcription:

Continuous Integration Stefan Sprenger (sprengsz@informatik.hu-berlin.de) Semesterprojekt Verteilte Echtzeitrecherche in Genomdaten 15. Dezember 2015

Motivation 2

How was software developed before CI? Software development is done in teams Divide software in subparts, assign subparts to teams Work of multiple teams/persons has to be integrated Typically, integration is done at release time Typically, integration is done manually 3

How was software developed before CI? Integration Middleware Bug fixes? New releases? Frontend Start of development Release v1 4

What s the issue? Bad software quality Integration tests can only be executed before a release Frustration rises towards the end of a project Manual (re-)execution of tasks No feedback possible before integration (release) Obviously, we need to integrate more often and earlier. 5

Continuous Integration is a philosophy, but not a tool. 6

Continuous Integration (CI) Automatic integration of a software project Every change in the software triggers a new build In a perfect world, the software s tests are executed to determine the success of a build Gives early feedback in form of reports A build can be successful or fail 7

CI in practice Commit Version Control System Developer Fetch HEAD Report Continuous Integration Server Create build 8

How is a build created? Download dependencies Compile code Run tests Create build artifacts Create reports A build can be successful or fail. 9

How does CI help us? We always know the latest stable version of our software We know if and which bugs currently exist We detect bugs earlier We can automatically test different setups different databases multiple versions of 3rd party libraries different configurations 10

Good practices Always write tests for your software (unit, integration,..) Commit frequently Small iterations Keep the build fast (keep your tests fast) Don t commit when the build is broken Build system should be identical to production system Use build system for deployment 11

Software tests 12

Software tests No manual testing by {developer, manager, customer} Automatic testing using a test framework Test framework provides tools to define tests Usually, tests are defined in the same programming language as the tested software Tests check if the software meets a certain requirement Tests can be executed Tests can be successful or fail. 13

Unit tests Test a certain unit of a software A unit may be a class in OOP The unit is tested isolated Interaction between different units is not tested Test cases are independent from each other Unit tests are written by software developers 14

How may a unit test look like? class MailValidator { public boolean check(string mailaddress) { Pattern pattern = Pattern.compile( [A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4} ); Matcher matcher = pattern.matcher(mailaddress); } } return matcher.matches(); 15

How may a unit test look like? import static org.junit.assert.assertequals; import org.junit.test; class TestMailValidator { public void testvalidmail() { MailValidator validator = new MailValidator(); assert(validator.check( sprengsz@informatik.hu-berlin.de ) == true); } } 16

How may a unit test look like? class TestMailValidator { public void testvalidmail() { MailValidator validator = new MailValidator(); assert(validator.check( sprengsz@informatik.hu-berlin.de ) == true); } } 17

How may a unit test look like? class TestMailValidator { public void testvalidmail() { MailValidator validator = new MailValidator(); assert(validator.check( sprengsz@informatik.hu-berlin.de ) == true); } } public void testinvalidmail() { MailValidator validator = new MailValidator(); assert(validator.check( sprengsz@informatik ) == false); } 18

Integration tests Test multiple units combined Test interaction between units Ensures that integration of multiple subparts works Often done using same framework as for unit tests 19

Tools 20

Travis CI https://travis-ci.org Open-source distributed build service Coupled to GitHub Setup: 1) Sign in using your GitHub account 2) Select repositories that Travis should build Build is configurable using a.travis.yml file Heavily used in the OSS community 21

Example.travis.yml rvm: - 1.8-1.9 env: -DB=mongodb -DB=redis -DB=mysql before_script: - mysql -e create database vanity_test; > /dev/null 22

Travis CI 23

Jenkins CI https://jenkins-ci.org/ Open-source build system Is provided as Java application Can be hosted in your infrastructure More flexible than Travis CI Lots of plugins available 24

Questions? 25