Continuous Integration For Real: The Perforce Java Platform. Hamish Reid Perforce Software Inc.



Similar documents
Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration

Software Construction

Continuous Integration: A case study

Leveraging Rational Team Concert's build capabilities for Continuous Integration

In depth study - Dev teams tooling

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

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Comparison: Perforce and Microsoft Team Foundation Server (TFS)

Delivering Quality Software with Continuous Integration

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

Modern practices TIE-21100/

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

Build management & Continuous integration. with Maven & Hudson

Introduction to Programming Tools. Anjana & Shankar September,2010

Meister Going Beyond Maven

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

Implementing Continuous Integration Testing Prepared by:

SOFTWARE DEVELOPMENT BASICS SED

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

Software Development In the Cloud Cloud management and ALM

Software Configuration Management and Continuous Integration

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Introduction to Agile Software Development Process. Software Development Life Cycles

Continuous Integration: Put it at the heart of your development

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

Kevin Lee Technical Consultant As part of a normal software build and release process

Continuous Integration: Aspects in Automation and Configuration Management

Continuous Integration Processes and SCM To Support Test Automation

SourceAnywhere Service Configurator can be launched from Start -> All Programs -> Dynamsoft SourceAnywhere Server.

Mobile Development with Git, Gerrit & Jenkins

Content. Development Tools 2(63)

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

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Continuous Integration on System z

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

Continuous Integration in Kieker

Development Testing for Agile Environments

Integration in Practice

GENiC. Deliverable D5.1 Development & Integration guidelines including integration environment & means. Dissemination Level: Public

P4VS User Guide

Visual Studio - Continuous Integration

Shelf Life. Shelving in Perforce Sven Erik Knop, Perforce Software

Continuous Integration. CSC 440: Software Engineering Slide #1

SMZ. SocialMedia. Z olutions

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

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Agile Web Application Testing

Software Engineering I (02161)

HP ALM11 & MS VS/TFS2010

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

Software infrastructure for Java development projects

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

Continuous Integration (CI)

Organising Massive Test bol.com. Jeroen Ruijgers and Viktor Clerc

Git Branching for Continuous Delivery

Sonatype CLM for Maven. Sonatype CLM for Maven

@CodenvyHQ

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

Continuous Integration Just another buzz word?

Continuous Integration and Delivery at NSIDC

TeamCity A Professional Solution for Delivering Quality Software, on Time

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

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

Using Oracle Cloud to Power Your Application Development Lifecycle

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

Software project management. and. Maven

Continuous Integration

SOA-14: Continuous Integration in SOA Projects Andreas Gies

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

Towards Software Configuration Management for Test-Driven Development

Continuous???? Copyright 2015 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Source Control Systems

Perfecto Mobile. All rights reserved.

Mastering Continuous Integration with Jenkins

Coverity Services. World-class professional services, technical support and training from the Coverity development testing experts

Software Life Cycles and Configuration Management

Build Management. Context. Learning Objectives

How To Write A Continuous Delivery

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Software configuration management

Team Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang

Continuous Delivery by example.net

Agile So)ware Development

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Continuous integration for databases using

How Silk Central brings flexibility to agile development

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

Fundamentals of Continuous Integration

Automated Integration Testing & Continuous Integration for webmethods

Transcription:

Continuous Integration For Real: The Perforce Java Platform Hamish Reid Perforce Software Inc.

OVERVIEW What do we mean by Agile? Continuous Integration? Product line highlights: P4Eclipse + Mylin + MergeQuest P4Java P4Ant P4Maven (Hudson Perforce Plugin) (P4Java, P4D) The Perforce Java Team CI Workflow

WHAT DO WE MEAN BY AGILE? Adaptive processes and workflows: Feedback- and reality-driven Flexible goals Continuous processes and workflows: No surprises! Small increments in planning Small increments in delivery Small increments in effort There s always some version of the final product Examples: Scrum, XP, Kanban

WHAT DOES CONTINUOUS INTEGRATION MEAN? The heart of agile processes ( but not just agile processes). Martin Fowler s essentials: Integration is a non-event. Any individual developer's work is only a few hours away from a shared project state. Individual work can be integrated back into that state in minutes. Any integration errors are found rapidly and can be fixed rapidly. Trades up-front workflow and infrastructure effort for integration simplicity. Not for every product or workflow.

CONTINUOUS INTEGRATION ELEMENTS (1) Martin Fowler: Configuration management Build and test automation Self-testing Frequent commits Build and test on commit Fast build / test cycles Test in production environment clone Easy to get latest build artifacts Easy to get latest status Automated deployment

CONTINUOUS INTEGRATION ELEMENTS (2) Additionally, from our own experience: Integration into issues tracker system Easy / safe / cheap branching and integrate / merge / resolve cycle Low burden for developers: Integration into IDE s and other common tools Visualization Culturally appropriate

OUR JAVA TEAM WORKFLOW We eat our own dog food but we also eat our customers dog food Heavy emphasis on continuous integration (Very) test-driven development process Jobs-driven process Branch-centric process: Dev / shared (team) / main / release Two modes: Eclipse-centric development and dev testing Hudson-centric automation for shared branches Open Source / off-the-shelf solutions: Eclipse, Mylin, Junit, Maven, Ant, Hudson, Cruise control

KEY ELEMENTS IN OUR CI WORKFLOW Eclipse + P4Eclipse P4Eclipse + MergeQuest + Mylin + more Hudson + Perforce plugin Maven + P4Maven Ant + P4Ant P4Java (P4D)

ECLIPSE THE DEVELOPER'S COMMAND CENTER

ECLIPSE + P4ECLIPSE All code work done in Eclipse P4Eclipse supplies the Perforce functionality: Import as project Add / edit / delete files Submit / changelist management Refactoring P4Grep, diffs, resolves, branches, merges All dev testing done using Junit: Suite-based Right-click from Eclipse Mylin the task master MergeQuest, branch graph, timelapse Mavenized development where needed

HUDSON + PERFORCE Hudson + P4 extensions central to Perforce Java team workflow: Used to setup builds and tests Used to store results and raw report data back to SCM Triggered on successful merges and codeline changes Uses existing third-party Open Source plugin Perforce will help develop and maintain Currently p4 command line based Typically configured through Hudson control panel Works with Jenkins, too, of course

MAVEN + P4MAVEN Maven used extensively: Distribute shared team builds Cache external dependencies Off-the-shelf build lifecycle support Tie-ins to Eclipse Often run from Hudson P4Maven: Perforce-developed and supported P4Java-based Released 11.1 Full Maven scm functionality MOJO-based extensions for jobs, etc. Non-core plugin

ANT + P4ANT P4Java-based P4Ant targets: The usual suspects, plus things like shelve / unshelve, fix, job-related tasks, etc. Perforce usage: Test setups Builds Distributions Example: <taskdef resource="com/perforce/ant/tasks/p4tasks.properties" /> <target name="p4tasktest" description="perforce task test"> <p4jsubmit port="eng-p4java-vm:20101" user="p4jtestuser" passwd="p4jtestuser" client="p4testuserws" changelist="3391" /> </target>

P4JAVA Makes all-java implementations possible Native protocol implementation Clear object model Underpins: Nearly all our Java-related CI platform Perforce Web Services Platform (P4WSP)

LOOKING BACK Tools integration ( it s the tools, stupid! ): P4Eclipse + Mylin P4Maven, P4Ant, Hudson Plugin Visualization: MergeQuest, P4Eclipse, Timelapse, Branch Graph Hudson + P4Hudson Immediacy: P4Eclipse, Hudson Flexibility: all that and more.

SUMMARY The Perforce Java product line now forms a platform Key components: P4Eclipse P4Maven P4Ant P4Hudson (P4D, P4Java) It makes agile continuous integration so easy that even the Perforce Java team can do it.