Who Moved My Module? 1

Similar documents
PHP Composer 9 Benefits of Using a Binary Repository Manager

Distributing JavaFX Applications with Java WebStart and Artifactory

JetBrains TeamCity Comparison

9 Reasons To Use a Binary Repository for Front-End Development with Bower

User Plugins. About Plugins. Deploying Plugins

Developing Fast with

REASONS TO USE A BINARY REPOSITORY MANAGER WHEN DEVELOPING WITH. White Paper

JenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot

SECURE PRIVATE VAGRANT BOXES AND MORE WITH A BINARY REPOSITORY MANAGER. White Paper

Jenkins User Conference Israel. #jenkinsconf. CI / Liveperson. Gidi Samuels. July 16, #jenkinsconf

Continuous Integration using Docker & Jenkins

AEM Code Promotion and Content Synchronization Best Practices

Continuous Delivery for Cloud Native Applications

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

TM DevOps Use Case TechMinfy All Rights Reserved

Seven Habits of Highly Effective Jenkins Users

Push up your code next generation version control with (E)Git

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

ARES: AUTOMATIC RELEASE SERVICE

Software configuration management

CS 390 Software Engineering Lecture 3 Configuration Management

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

ThinkPalm s BreakThrough DevOps Capabilities ThinkPalm

Orchestrating the Continuous Delivery Process

CSC 2700: Scientific Computing

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Why switch exist-db from Ant to Maven?

[Software Development] Development Tools. Davide Balzarotti. Eurecom Sophia Antipolis, France

NetApp Jenkins Plugin Documentation

Review Version Control Concepts

Version Control with Git ME 461 Fall 2018

SAME SAME, BUT BETTER Comparing Artifactory to Other Binary Repository Managers

White Paper(Draft) Continuous Integration/Delivery/Deployment in Next Generation Data Integration

Organising benchmarking LLVM-based compiler: Arm experience

An Architecture for Self-Organizing Continuous Delivery Pipelines

Centralized Management of Global Software Artifact Repositories. White Paper. February 2016

Building Microservices with the 12 Factor App Pattern

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

Continuous Integration Ensemble / HealthShare Health Connect

You Can t Move Forward Unless You Can Roll Back. By: Michael Black

Revision Control. Software Engineering SS 2007

SAME SAME, BUT BETTER

DevNet Workshop-Hands-on with CloudCenter and Jenkins

Shift Left Testing: are you ready? Live Webinar, Sept 19

Git and Gerrit Workflows. Enforcing Manual & Automated Review

How to Build an Appium Continuous Testing Pipeline

Version Control Systems

Knative: Building serverless platforms on top of Kubernetes

Release for Lithium. George Zhao, Ed Warnicke, Colin Dixon, Mathieu Lemey, Robert Varga, An Ho.

Technology Background Development environment, Skeleton and Libraries

Release Engineering as More than a Part-time Pastime. Dinah McNutt Google, Inc.

Checking Out and Building Felix with NetBeans

Using vrealize Code Stream. 12 APRIL 2018 vrealize Code Stream 2.4

USING ARTIFACTORY TO MANAGE BINARIES ACROSS MULTI-SITE TOPOLOGIES

From Continuous Integration To Continuous Delivery With Jenkins

Continuous Integration and Deployment (CI/CD)

Subversion Branching and Merging. Jan Skalický

Software Tools Subversion

DevOps Agility in the Evolving Cloud Services Landscape

Advanced Dependency Management with Gradle. Benjamin Muschko, Gradle Inc.

WHITEPAPER. Database DevOps with the Redgate Deployment Suite for Oracle

Using the SQL CI TeamCity plugin in SQL Automation Pack

Welcome! Virtual tutorial starts at 15:00 GMT. Please leave feedback afterwards at:

Jenkins in the Enterprise Building resilient CI infrastructure

platform Development Process Optimization For Drupal centric projects

Using vrealize Code Stream. 16 MAY 2017 vrealize Code Stream 2.3

Using vrealize Code Stream

Jahia Studio JAHIA DOCUMENTION

Belle II - Git migration

Continuous Integration / Continuous Testing

Yinghui Wang

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker

VSO. Configuration Management

Bazaar VCS. Concepts and Workflows

Subversion Repository Layout

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

Managing a WordPress 2.6 installation with Subversion. Sam Bauers - Automattic

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

Configuration Management

Large-Scale Automation with Jenkins

Git tutorial. Katie Osterried C2SM. October 22, 2015

Effective Team Collaboration with Simulink

I keep hearing about DevOps What is it?

FreeBSD and Git. Ed Maste - FreeBSD Vendor Summit 2018

Version Control for PL/SQL

Your Engineering Excellency

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

#jenkinsconf. Jenkins user plugin. This time it's. Jenkins User Conference Israel. Shiran JFrog

Git for Subversion users

Con$nuous Integra$on Development Environment. Kovács Gábor

Git Branching for Agile Teams

Oracle Data Integrator 12c: Integration and Administration

CSE 160: Introduction to Parallel Computation

Gradle Leveraging Groovy for Building Java Applications. Hans Dockter Gradle Project Lead

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

CS 320 Introduction to Software Engineering Spring February 06, 2017

Step 1: Setup a Gitlab account

BUILD AND DEPLOY SOA PROJECTS FROM DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE

Remote Site Replication and Collaboration with JFrog Artifactory and NetApp StorageGRID Webscale

Transcription:

Who Moved My Module? 1

About Me Yoav Landman - JFrog s CTO and Co-Founder - Creator of the Artifactory Project - 13 years experience in commercial enterprise build and development environments 2

Agenda A binary repository - why manage modules? Modules and release management - Release strategies and models - Common release issues 3

A Binary Repository A shared place for binaries - 3rd party and local artifacts Much more than a passive storage Critical for CI and ALM 4

What s wrong with my... Subversion Apache file server/webdav Shared file system DVD Disk-on-key, tape, drawer... 5

Can your shared file system/vcs Download and cache remote artifacts? Promote release artifacts? Control licenses used in your software? Track and preserve artifacts used by CI builds? Enforce module CRUD security easily? Track changes made to artifacts? Automatically clean up integration garbage? Manage artifacts with powerful searches? Expose management REST API? 6

The Artifact Repository Ecosystem replication Modules/Artifacts/Libraries content-filtering security mgmt. promotion Repository continuous builds searches build isolation user extensions Remote Repositories VCS build tracking REST access host & provision license control proxy & cache metadata and tagging 7

Demo Binary Repository 8

Artifact Build Integration Platform http://www.flickr.com/photos/skrb/1326663872 9

Artifact Build Integration Platform #1 #1-1 #1-2 #3-2 #3-1 #2 #2-1 #2-2 #3-3 #3 10

Integrates with build context https://github.com/jfrogdev 11

Demo Build integration 12

The release pipeline Multiple steps towards declaring a release Check points for advancing the release flow modules modules modules modules Source: Agile ALM, Michael Hüttermann, Manning Publications Co. 13

The release pipeline model A B C GM Linear A B Non-linear C GM 14

The release pipeline - YMMV http://www.flickr.com/photos/jaxxon/3335409285 15

Typical release issues Avoiding artifact rebuilding on release Picking a source/release strategy Integration build Isolation Avoiding license/arbitrary artifact creep 16

Avoiding artifact rebuilding on release Product Binaries v1.1-snap v1.1-snap v1.1-snap v1.1-snap Qualified v1.1-snap v1.1-snap v1.1-snap v1.1-snap A collection of release-qualified integration packages Lack of release status - No way to express that without changing pom/ivy descriptors Resolution for packaging coupled to descriptors 17

Resolution with integration versions Ivy/Gradle - Integration revisions same as any release revision (1.0-782) - By default all dynamic versions are resolved and replaced in delivered modules - Can be used in a release package Maven - Published artifacts can contain dynamic dependencies (SNAPSHOT or ranges) + unresolved properties - Very hard to keep reproducibility 18

Source/release strategies Release-to-branch M2 Release plugin Artifactory build-integration release 19

Merge-to-branch job#1: build/test trunk release branch tag merge to branch job#2: build/test release tag tag a release 20

Jenkins M2 release plugin 1. Check out latest VCS revision 2. Compile & test 3. Change POMs to next release version 4. Compile & test 5. Commit new POMs (!) 6. Create a VCS tag from WC 7. Change POMs to next dev version (++-SNAPSHOT) 8. Commit new POMs 9. Check out previously created VCS tag 10. Compile & test 11. Publish binaries to repository http://www.flickr.com/photos/rsdio/3642425935 21

Jenkins M2 release plugin Attempts to reuse a user-operated plugin in a CI environment - Uses separate external Maven process - Uses separate external VCS (svn auth) No good rollback - End users may like CI s VCS permissions Maven only 22

Artifactory plugin (SVN) 1. Change descriptors to next release version 2. Compile & test 3. Create a VCS tag from WC 4. Change descriptors to next dev version (e.g. version++-snapshot) 5. Commit new descriptors 6. Publish binaries to repository 23

Artifactory plugin (git) 1. Create a local release branch 2. Change descriptors to next release version 3. Local commit + tag the release branch 4. Compile & test 5. Checkout master branch 6. Change descriptors to next dev version 7. Commit + push all changes 8. Publish binaries to repository 24

Releasing with the Artifactory plugin Fast Easy automatic rollback - E.g. tag removal Closely integrated with CI server - Reuses build tool and VCS definitions Gradle support Bamboo and TeamCity support Support for Ivy in the works http://blogs.jfrog.org/2011/06/jenkins-new-maven-and-gradle-release.html 25

Demo Release & promotion 26

Release build isolation Cascading jobs - tests run longer A downstream job may take wrong artifacts put by an upstream job No isolation - the build integration silo is broken http://www.flickr.com/photos/sharynmorrow/5961475 27

Keeping integration private time job-a #12 job-b #4 job-a #13 job-c X A#12 B#4 C#2??? A#13 28

Isolating resolution Deploy as many integration revs in parallel Each build resolves only the artifacts in the build chain it is part of Achieved with CI artifact painting and matrix params for resolution: http://.../artifactory/jfrog/app-1.0-snapshot.jar;build.root=j-1025 29

License creep Verify no unwanted 3rd party is packaged into the release Discover and apply license information continuously! - Information is there - Discover and act early 30

License violation detection 31

Demo Time Detecting license violations 32

Artifact creep A generic way to control artifacts Audit or gate-keep what is being used download { altresponse {request, responserepopath ->} altremotepath {repopath ->} altremotecontent {repopath ->} beforeremotedownload {request, repopath ->} afterremotedownload {request, repopath ->} beforedownload {request, responserepopath ->} } storage { beforecreate { item -> } aftercreate {item ->} beforedelete {item ->} afterdelete {item ->} } jobs {} executions {} realms {} 33

Demo Time Artifact filtering 34

Summary The need for using a binary repository Module management plays key roles in - Continuous integration and delivery - Release management Changes the way we use and think about binaries Newly evolving domain 35

Thank you! Questions? 36