Continuous Integration The Full Monty Artifactory and Gradle. Yoav Landman & Frederic Simon



Similar documents
Build management & Continuous integration. with Maven & Hudson

Content. Development Tools 2(63)

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

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

Meister Going Beyond Maven

Software project management. and. Maven

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

The Benefits of Utilizing a Repository Manager

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

Efficient Automated Build and Deployment Framework with Parallel Process

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

SOA-14: Continuous Integration in SOA Projects Andreas Gies

JAVA WEB START OVERVIEW

Software project management. and. Maven

Hudson configuration manual

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Welcome The webinar will begin shortly

NetBeans IDE Field Guide

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Oracle Data Integrator 11g: Integration and Administration

Repository Management with Nexus

An Oracle White Paper September Oracle Team Productivity Center

D83167 Oracle Data Integrator 12c: Integration and Administration

Sonatype CLM for Maven. Sonatype CLM for Maven

Releasing High Quality Applications More Quickly with vrealize Code Stream

Maven 2 in the real world

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Software Quality Exercise 2

PHP vs. Java. In this paper, I am not discussing following two issues since each is currently hotly debated in various communities:

NeXUS REPOSITORY managers

Maven2 Reference. Invoking Maven General Syntax: Prints help debugging output, very useful to diagnose. Creating a new Project (jar) Example:

Configuring the BBj Jetty Web Server (rev10.02) for OSAS

ANSYS EKM Overview. What is EKM?

Adam Rauch Partner, LabKey Software Extending LabKey Server Part 1: Retrieving and Presenting Data

Oracle Data Integrator 12c: Integration and Administration

Configuring Secure Socket Layer (SSL) for use with BPM 7.5.x

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

Developer s Guide. How to Develop a Communiqué Digital Asset Management Solution

How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip

Course 6232A: Implementing a Microsoft SQL Server 2008 Database

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

SOA REFERENCE ARCHITECTURE: WEB TIER

SAP Crystal Reports & SAP HANA: Integration & Roadmap Kenneth Li SAP SESSION CODE: 0401

SOFTWARE DEVELOPMENT BASICS SED

Oracle Forms 12c Change Begins Here

Developing Eclipse Plug-ins* Learning Objectives. Any Eclipse product is composed of plug-ins

What's New In DITA CMS 4.0

Continuous Integration For Fusion Middleware

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

Repository Management with Nexus

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

CollabNet TeamForge 5.3. User Guide

Jenkins: The Definitive Guide

QL Integration into Scala and Excel. Martin Dietrich

Module 11 Setting up Customization Environment

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

OFBiz Addons goals, howto use, howto manage. Nicolas Malin, Nov. 2012

Caching SMB Data for Offline Access and an Improved Online Experience

Jitterbit Technical Overview : Salesforce

2012 Nolio Ltd. All rights reserved

SOFTWARE TESTING TRAINING COURSES CONTENTS

PRESENTS... Reasons to Switch from SourceSafe: How to Make Your Life Easier with SourceAnywhere Standalone

Integration of DB oriented CAD systems with Product Lifecycle Management

OMU350 Operations Manager 9.x on UNIX/Linux Advanced Administration

Software configuration management

Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2.

Jitterbit Technical Overview : Microsoft Dynamics CRM

ALERT installation setup

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Introduction to Mobile Access Gateway Installation

Cross-domain Identity Management System for Cloud Environment

Hands on exercise for

Continuous Integration. CSC 440: Software Engineering Slide #1

Adobe Summit 2015 Lab 718: Managing Mobile Apps: A PhoneGap Enterprise Introduction for Marketers

Implementing a Microsoft SQL Server 2005 Database

Enterprise Service Bus

Software infrastructure for Java development projects

Maven 3 New Features. Stefan Scheidt Solution Architect OPITZ CONSULTING GmbH

Securely. Mobilize Any Business Application. Rapidly. The Challenge KEY BENEFITS

Mastering Continuous Integration with Jenkins

IBM Endpoint Manager Version 9.1. Patch Management for Red Hat Enterprise Linux User's Guide

EMC Documentum Composer

EMC Documentum Content Services for SAP Repository Manager

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

Passive RFID Solutions for Asset Tracking and Inventory Management

JOURNAL OF OBJECT TECHNOLOGY

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

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Getting Started with the Ed-Fi ODS and Ed-Fi ODS API

Evaluator s Guide. PC-Duo Enterprise HelpDesk v5.0. Copyright 2006 Vector Networks Ltd and MetaQuest Software Inc. All rights reserved.

Introduction to Programming Tools. Anjana & Shankar September,2010

SDK Code Examples Version 2.4.2

Middleware- Driven Mobile Applications

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

DEPLOYMENT ARCHITECTURE FOR JAVA ENVIRONMENTS

HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS

Transcription:

Continuous Integration The Full Monty Artifactory and Gradle Yoav Landman & Frederic Simon

About us Yoav Landman Creator of Artifactory, JFrog s CTO Frederic Simon JFrog s Chief Architect 10+ years experience in commercial enterprise build and development environments Serving the community since 2006 with OSS tools (Artifactory, Jade Maven Plugins and AnnoMojo, Dependency Analyzer, Stellarium for Java, IDEA plugins...) 2

Agenda Intro Configuration tips Searches Reproducible builds Advanced features Smart staging and promotion Web Start and JavaFX Gradle integration 3

What is a repository manager? Artifacts storage and proxy Avoid hitting public remote repositories Inefficient, unreliable, content quality, non-secure... Deploy, manage and share local artifacts Full control over artifacts resolution and delivery 4

What is? Advanced binaries repository - the binaries SCM JavaFX and WebStart repository Supports REST, Maven*, Gradle*, Ivy/Ant*, Buildr * native support First real web-driven repository manager (2006) Upload through UI, indexed searches +80,000 downloads (02/2010) OSS Enterprise PowerPack Cloud hosting 5

Configuration tips - demo Remote repositories sharing via REST Reuse configuration Automatically generate the client configuration Maven - settings.xml Gradle plug-in Centrally controlled encrypted password <credentials host="localhost" realm="artifactory Realm" username="admin" passwd="{desede}oyxbjkrcs9jxkmi2rm8rca==" /> 6

7

Searches Search types Quick search (wildcard part of path) GAVC Properties Class/Jar resource See the actual class found! View source + syntax highlighting XPath - also search inside POM, Ivy.xml content! Grouping support E.g. group by repository, groupid etc. Always possible to locate the results in the repo tree browser 8

9

Reproducible Builds Sources have a reproducible context - compilation Reproducible via SCM tagging. Binaries also have a context - packaging and publishing A lot of things are only resolved at build time: Version ranges Dynamic property values Latest snapshot and release versions (latest.integration/latest.release) For both Dependencies and Plugins 10

The Role of the CI Server Captures all the information needed to reproduce the build Published module artifacts Resolved dependencies of all scopes General Build Environment JVM Architecture CI server version General properties Build statistics User who executed the build Etc. 11

Artifactory and Hudson Deploy from Hudson to Artifactory Navigate the builds in Artifactory Link back to Hudson builds Relate artifacts to build Export/promote/manipulate build artifacts More efficient multi-module deployment 12

Gradle integration 13 Artifactory and Gradle started a strong technical collaboration Zero configuration plugin to deploy and resolve from Artifactory when using Gradle in enterprise env. Extract BuildInfo on the fly Done! Integrating with the Hudson Gradle plug-in Gradle shows great potential Zero intrusiveness Ivy for mature resolution and deployments Flexible control Terse and easy to understand configuration Ideal for integrating with a repo manager

Build Scenario 14

The build jobs pyramid SCM update Retrieve Test Deploy No. of builds Build time unit tests smoke tests Integ, tests GA Retrieve/Deploy 15

16

Advanced repository features Checksum-based storage Handling download bursts Verifying uploaded artifacts Locking Cleanup bad remote repo references Built-in metadata 17

Checksum-based storage Many identical artifacts are produced and stored numerous times in the repositories Unique snapshots that are exactly the same between subsequent builds Other artifacts that are copied Mainly needed for more natural security control Artifactory uses a checksum-based storage Identical artifacts are stored on the server exactly once! No matter how many references are there Copy and move are very cheap Pointer operations 18

Concurrent downloads/ request bursts New snapshot dependency available/ POM updated with a new dependency version Dependency can be as big as hundreds of megs Assemblies All clients download at once Network blockage (DOSing) Artifactory will identify this Queue all incoming request until the first one finishes Others will get the cached version 19

Checksum for uploaded artifacts No way to verify uploaded artifacts Maven approach: The repository is passive All calculations done on client Repository to accept and store client checksum Artifactory Compare client checksum with the one calculated on the repository If in conflict return 409 until a good checksum is found This behavior is configurable 20

Locking Artifactory applies RWLocks on all items Avoid concurrent writes & dirty reads Spans to metadata as well - cannot create metadata conflicts Built-in utility for debugging lock contention in runtime (zero overhead) 21

POM cleanup Many common third party POMs contain remote repository references making controlled resolution a nightmare Global mirroring is not a solution Forces a unified repository for releases/snapshots/plugins Artifactory can facade POMs through a Virtual Repository Can configure remote repo references to be removed Original POM is intact 22

Metadata backed into the core Every repository element can hold metadata definitions Both files and folders Metadata is any XML document Can be queried using XPath All exposed via UI and REST API Properties tagging Similar to SVN props Internally stored as XML Strongly typed props can be defined via UI Open/closed lists, multi-select, single-select etc. Applied via UI or REST Also on deploy time with zero build tool tweaking! 23

Smart staging and promotion Repository has two main roles Proxy remote artifacts Host deployed artifacts Artifacts (should) come from CI server Promotion of artifacts starts with a build The Binaries Repository & the CI Server are always interconnected 24

Search-based management 25 Makes bulk artifact management a lot easier Shopping-cart of artifacts Fill-up the cart by searching and saving the search results - any search type! Do other searches and add/subtract the results from the original Can tweak the result manually E.g. remove sources Once done move/promote/copy/export the result Does not enforce narrow concepts to support only specific limited use cases E.g. promotion

26

JavaFX JavaFX/JNLP plugin Compiles JavaFX sources Uses standard Maven resources for classpath resolution Creates Web Start JNLP files - standalone and/or browser WebStart Virtual Repository Sign jars automatically Transform JNLP file href Provision JNLP files and dependencies 27

28

Thank You! Q&A 29