Apache Gump. Continuous Integration on Steroids. Apache Software Foundation Building Bridges @ FOSDEM 2005

Similar documents
IBM InfoSphere MDM Server v9.0. Version: Demo. Page <<1/11>>

Content. Development Tools 2(63)

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

Hudson Continous Integration Server. Stefan Saasen,

Exam Name: IBM InfoSphere MDM Server v9.0

Jenkins on Windows with StreamBase

In this chapter, we lay the foundation for all our further discussions. We start

Software infrastructure for Java development projects

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

The Benefits of Modular Programming

Hudson configuration manual

Builder User Guide. Version Visual Rules Suite - Builder. Bosch Software Innovations

LECTURES NOTES Organisational Aspects of Software Development

Software Quality Exercise 2

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Deploying and Managing SolrCloud in the Cloud ApacheCon, April 8, 2014 Timothy Potter. Search Discover Analyze

Continuous Integration: Put it at the heart of your development

Jenkins: The Definitive Guide

An Introduction to Software Development Process and Collaborative Work

Builder User Guide. Version 5.4. Visual Rules Suite - Builder. Bosch Software Innovations

Documentation and Project Organization

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

One of the fundamental kinds of Web sites that SharePoint 2010 allows

Software project management. and. Maven

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

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

Build management & Continuous integration. with Maven & Hudson

Server-side OSGi with Apache Sling. Felix Meschberger Day Management AG 124

Continuous Integration

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

PASS4TEST 専 門 IT 認 証 試 験 問 題 集 提 供 者

Quality Cruising. Making Java Work for Erlang. Erik (Happi) Stenman

Continuous Integration using Docker & Jenkins

Data processing goes big

VOC Documentation. Release 0.1. Russell Keith-Magee

Networks and Services

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911

Application Notes for Packaging and Deploying Avaya Communications Process Manager Sample SDK Web Application on a JBoss Application Server Issue 1.

Software Outsourcing - Software Development. info@westtownwebservices.com

Developing Web Services with Eclipse and Open Source. Claire Rogers Developer Resources and Partner Enablement, HP February, 2004

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Installing (1.8.7) 9/2/ Installing jgrasp

SOFTWARE TESTING TRAINING COURSES CONTENTS

Data Migration from Magento 1 to Magento 2 Including ParadoxLabs Authorize.Net CIM Plugin Last Updated Jan 4, 2016

Crawl Proxy Installation and Configuration Guide

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

RESTful web applications with Apache Sling

EMC Documentum Composer

ALERT installation setup

Lab Exercise Part II: Git: A distributed version control system

Dove User Guide Copyright Virgil Trasca

Software project management. and. Maven

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Lab 0 (Setting up your Development Environment) Week 1

SOFTWARE DEVELOPMENT BASICS SED

Version Control Your Jenkins Jobs with Jenkins Job Builder

Advanced Testing and Continuous Integration

Open Source vs. Collaborative Software: FOSS is Not Enough

latest Release 0.2.6

CSE 70: Software Development Pipeline Build Process, XML, Repositories

Service Integration course. Cassandra

Team Collaboration, Version Management, Audit Trails

Version Control with Git

Pragmatic Version Control

Developing In Eclipse, with ADT

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

Coding in Industry. David Berry Director of Engineering Qualcomm Cambridge Ltd

Automated Process Center Installation and Configuration Guide for UNIX

Easing embedded Linux software development for SBCs

Object systems available in R. Why use classes? Information hiding. Statistics 771. R Object Systems Managing R Projects Creating R Packages

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Duke University Program Design & Construction Course

Jenesis Software - Podcast Episode 3

Hello World Portlet Rendered with JSP for WebSphere Portal Version 4.1

TeamCity A Professional Solution for Delivering Quality Software, on Time

IBM WebSphere Message Broker - Integrating Tivoli Federated Identity Manager

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

Version Control with Git. Dylan Nugent

Tutorial 5: Developing Java applications

Automatic promotion and versioning with Oracle Data Integrator 12c

Software Configuration Management

Bubble Code Review for Magento

The Social Accelerator Setup Guide

Continuous security audit automation with Spacewalk, Puppet, Mcollective and SCAP

YouTube Channel Authority - The Definitive Guide

Nanda Kishor K N. nandakishorkn@gmail.com

Creating Web Services Applications with IntelliJ IDEA

See the installation page

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

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

Transcription:

Apache Gump Continuous Integration on Steroids

About LSD http://www.leosimons.com/ leosimons@apache.org ASF Member Apache Excalibur, Gump, Wiki, Infrastructure Physics Student, Enschede

Presentations, Pragmatic Open Source Style Please ask questions The bikeshed is definitely red SubEthaEdit, not Vi, not Emacs We don t talk about licensing We talk too much about everything else And do ask questions!

About the audience There are about this many people here: Many are F/OSS developers: And these people don t do java:

In this presentation Apache Cocoon (briefly) XML publishing framework Apache Excalibur (briefer) IoC framework Apache ${foo} (honerable mention) There s a lot Apache Gump (kewl!) Making all that work together Past, present, future Building bridges And the steroids

Apache Cocoon: Goal This image ripped from cocoon documentation, ASF and stuff

Apache Cocoon: Glue This image ripped from cocoon documentation, ASF and stuff

Apache Cocoon: Pipelines This image ripped from cocoon documentation, ASF and stuff

Apache Cocoon: Architecture This image ripped from cocoon documentation, ASF and stuff

Apache Cocoon: Oh boy! 2400+ java sourcefiles 300.000+ lines of code (excluding comments) Integrates with dozens of other F/OSS projects using component architecture Cocoon core has 338 dependencies

Apache Excalibur: Goal Somewhere In there This image ripped from cocoon documentation, ASF and stuff

Apache Excalibur: Inversion of Control Container Container Container Container

Apache Excalibur: Umpf! 800+ java sourcefiles 90000+ lines of code (excluding comments) 50+ separate distributables Excalibur core has 100s of dependencies

Apache ${foo} Majority of activity at ASF is java-based now 1000+ committers Apache is on the JCP A big chunk of server-side java happens at Apache Some of the de-facto standards such as Ant Millions of lines of java code

Artist impression

Okay, so we do java

how on earth do we know it all actually works?

Introducing Continuous integration Get yourself a beefy server Automate all project builds Automate all project tests Generate reports and statistics Make it all part of your development process (i.e. send yourself e-mail)

Introducing Gump A batch-processing continuous integration package written in python Lots of useful features like e-mail notification, RSS syndication, etc. Understands ant, maven, make, etc XML descriptors in a central repositories for shared maintenance

When continuous integration fails Project B depends on project A Project A makes a teeny weenie small incompatible change in CVS head Project B releases 1.1 Project A releases 1.1 1.1 of B does not work with 1.1 of A A B

it can fail miserably Project B depends on project A, Project C on A and B Project A makes a small incompatible change in CVS head Project B adds a cool new feature Project C notices the change in CVS head of A in time, and adapts, using a snapshot version. Same for B. Project C releases 1.1 A Project B releases 1.1 Project A releases 1.1 B C

Welcome to jar hell! The problem is only noticed months later So what s the best recovery solution? Complex! Now imagine you ve got 400 dependencies, not 2

Gump on Steroids Project B might declare it depends on Project A version 1.0 We override that declaration, and instead compile it against A from CVS head that we just built <!-- maven buildfile snippet --> <project> <name>b</name> <dependencies> <depend> <groupid>a<groupid> <artifactid>a</artifactid> <version>1.0</version> </depend> </dependencies> </project>

The World on Steroids Gump builds 100s of projects (not just A and B) Gump compiles over 150.000 java sourcefiles several times a day We send out lots of e-mails to developer mailing lists when stuff breaks

Example: change to log4j Subject: [human-assisted gump] log4j back incompatible change Date: Fri, 29 Oct 2004 01:07:38-0400 (...) change http://cvs.apache.org/viewcvs.cgi/logginglog4j/src/java/org/apache/log4j/category.java?r1=1.88&r2=1.89&diff_format =h caused a compilation failure of the following projects: - commons-logging - velocity - ant and, as a result, caused a drop in the gump's success from 83% to 53% (...)

It actually works! (sometimes) Without Gump, it would be near-impossible to upgrade one of Cocoon s 338 dependencies without a lot of stuff breaking In fairness, Gump is quite far from being perfect, and incompatibility problems still do occur frequently But Gump really does help to increase awareness and really does get people to talk early and often

: Kaffe on Steroids Each night, we do a gump run against a CVS snapshot of Kaffe http://brutus.apache.org/gump/kaffe/index.html Measure of compatibility between ASF projects and the free java implementations

Kaffe-CVS Where we re at JDK 1.4 (Numbers for Friday afternoon)

Example: Ant on kaffe On Wed, 23 Feb 2005, Dalibor Topic <robilad@kaffe.org> wrote: > Stefan Bodewig <bodewig <at> apache.org> writes: >>... since optional/condition/ispingable.java shouldn't be compiled >> otherwise. >> >> Ant checks for the class java.lang.readable to detect JDK 1.5, has >> this recently been added to Kaffe? > > Yeah, just yesterday. Merge of a few non-generics bits from the > generics branch within GNU classpath. I guess the > java.lang.management classes are a safe bet, though :) So far the only JDK 1.5 feature Ant uses is InetAddress.isReachable. Do us a favor and implement it ;-) I'll modify Ant's build file to adapt, but I'd like to keep the Readable class as marker. It may be good to revisit each JDK 1.5 feature we add (if we do) to see whether Kaffe can support it. Stefan

What does gump do here? Help pinpoint exactly where to focus developer effort (both sides) to improve interop Provide a measure of progress Act as a really big integration test for Kaffe and classpath

Gump3: where we re going Fancy Web UI (thanks to cocoon and the mozilla team :-)

Gump3: a lot smarter We figured out the algorithm that shows exactly what change where caused what problems Just need to convert it to code D+ C+ D B+ C D- D A+ B C- C 0 A 1 B- B 2 A- A 2

Gump3: Historical Database time-invariant environment Host Workspace n Run 0 n address properties uri timestamp uri name 0 0 n 0 Package n 0 dependencies 1 1 Result Build success failure halt uri log Project_version timestamp 1 n Module url descriptor 1 Project uri descriptor

Gump3: Fancy CLI paddo:~/svn/gump/branches/gump3 lsimons$./gump help Utility commandline interface for Gump. Usage:./gump command [opts...] Available commands are: (...) run -- run pygump debug -- run pygump in debug mode test -- run the pygump unit tests dynagump -- run the dynagump web application server update-host -- update the configuration of a gump host create-database -- create a new gump MySQL database pycompile -- compile all pyump source files

Gump3: Plugin architecture class LoggingPlugin(AbstractPlugin): """Plugin that prints debug messages as it visits model objects.""" def init (self, log): self.log = log def initialize(self): self.log.debug("initializing...") def visit_workspace(self, workspace): self.log.debug("visiting workspace.") def visit_repository(self, repository): self.log.debug("visiting repository '%s'." % repository.name) (...) def finalize(self): self.log.debug("finishing up...")

Gump3: You tell us!

Questions, comments, criticism, offers to buy me beer?

ApacheCon Europe 2006 Stuttgart, July 18-22 http://www.apachecon.com/ Everything you ever wanted to know about Apache and more!