SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Release
Management
   with
Artifactory
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
Build Scenario




13
The build jobs pyramid
     ★ SCM update
     ★ Retrieve
     ★ Test
     ★ Deploy

              Build time       unit tests
                           smoke tests
                           Integ, tests
                               GA         Retrieve/Deploy
     No. of builds


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




16
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
17
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



18
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


19
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)




20
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




21
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!

22
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




23
Search-based management
     ★ 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
24
25
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




26
27
Gradle integration
     ★ 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
28
Thank You!


       Q&A
29

Contenu connexe

Tendances

Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersAmazon Web Services
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CDCprime
 
DevOps Monitoring and Alerting
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and AlertingKhairul Zebua
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...Edureka!
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at FrosconKris Buytaert
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps OverviewSagar Mody
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIDavid Hahn
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
SonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualitySonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualityLarry Nung
 
DevOps Introduction
DevOps IntroductionDevOps Introduction
DevOps IntroductionRobert Sell
 
Terraform GitOps on Codefresh
Terraform GitOps on CodefreshTerraform GitOps on Codefresh
Terraform GitOps on CodefreshCodefresh
 
GitLab for CI/CD process
GitLab for CI/CD processGitLab for CI/CD process
GitLab for CI/CD processHYS Enterprise
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To JenkinsKnoldus Inc.
 
CICD Using CircleCI
CICD Using CircleCICICD Using CircleCI
CICD Using CircleCIKnoldus Inc.
 

Tendances (20)

Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
DevOps Monitoring and Alerting
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and Alerting
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CI
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
SonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualitySonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code Quality
 
DevOps Introduction
DevOps IntroductionDevOps Introduction
DevOps Introduction
 
Terraform GitOps on Codefresh
Terraform GitOps on CodefreshTerraform GitOps on Codefresh
Terraform GitOps on Codefresh
 
GitLab for CI/CD process
GitLab for CI/CD processGitLab for CI/CD process
GitLab for CI/CD process
 
CI/CD
CI/CDCI/CD
CI/CD
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
CICD Using CircleCI
CICD Using CircleCICICD Using CircleCI
CICD Using CircleCI
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 

Similaire à Repository Management with JFrog Artifactory

CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
 
Eclipse Apricot
Eclipse ApricotEclipse Apricot
Eclipse ApricotNuxeo
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentDave Ward
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformNuxeo
 
Butter bei die Fische - Ein Jahr Entwicklung und Produktion mit Docker
Butter bei die Fische - Ein Jahr Entwicklung und Produktion mit DockerButter bei die Fische - Ein Jahr Entwicklung und Produktion mit Docker
Butter bei die Fische - Ein Jahr Entwicklung und Produktion mit Dockerjohannesunterstein
 
Using Docker in production: Get started today!
Using Docker in production: Get started today!Using Docker in production: Get started today!
Using Docker in production: Get started today!Clarence Bakirtzidis
 
NYC Identity Summit Tech Day: ForgeRock DevOps/Cloud Strategy
NYC Identity Summit Tech Day: ForgeRock DevOps/Cloud StrategyNYC Identity Summit Tech Day: ForgeRock DevOps/Cloud Strategy
NYC Identity Summit Tech Day: ForgeRock DevOps/Cloud StrategyForgeRock
 
Oracle virtualbox basic to rac attack
Oracle virtualbox basic to rac attackOracle virtualbox basic to rac attack
Oracle virtualbox basic to rac attackBobby Curtis
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodologylaeshin park
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Releaseelliando dias
 
Moving Windows Applications to the Cloud
Moving Windows Applications to the CloudMoving Windows Applications to the Cloud
Moving Windows Applications to the CloudRightScale
 
Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...
Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...
Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...Docker, Inc.
 

Similaire à Repository Management with JFrog Artifactory (20)

CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Eclipse Apricot
Eclipse ApricotEclipse Apricot
Eclipse Apricot
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
Meetup devops
Meetup devopsMeetup devops
Meetup devops
 
Butter bei die Fische - Ein Jahr Entwicklung und Produktion mit Docker
Butter bei die Fische - Ein Jahr Entwicklung und Produktion mit DockerButter bei die Fische - Ein Jahr Entwicklung und Produktion mit Docker
Butter bei die Fische - Ein Jahr Entwicklung und Produktion mit Docker
 
OpenStack and Windows
OpenStack and WindowsOpenStack and Windows
OpenStack and Windows
 
Using Docker in production: Get started today!
Using Docker in production: Get started today!Using Docker in production: Get started today!
Using Docker in production: Get started today!
 
Dockerize All The Things
Dockerize All The ThingsDockerize All The Things
Dockerize All The Things
 
Agile sites2
Agile sites2Agile sites2
Agile sites2
 
NYC Identity Summit Tech Day: ForgeRock DevOps/Cloud Strategy
NYC Identity Summit Tech Day: ForgeRock DevOps/Cloud StrategyNYC Identity Summit Tech Day: ForgeRock DevOps/Cloud Strategy
NYC Identity Summit Tech Day: ForgeRock DevOps/Cloud Strategy
 
Oracle virtualbox basic to rac attack
Oracle virtualbox basic to rac attackOracle virtualbox basic to rac attack
Oracle virtualbox basic to rac attack
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodology
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Release
 
Why to docker
Why to dockerWhy to docker
Why to docker
 
Moving Windows Applications to the Cloud
Moving Windows Applications to the CloudMoving Windows Applications to the Cloud
Moving Windows Applications to the Cloud
 
Docker-Intro
Docker-IntroDocker-Intro
Docker-Intro
 
OpenStack Summit
OpenStack SummitOpenStack Summit
OpenStack Summit
 
Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...
Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...
Journey to Docker Production: Evolving Your Infrastructure and Processes - Br...
 

Plus de Stephen Chin

DevOps Tools for Java Developers v2
DevOps Tools for Java Developers v2DevOps Tools for Java Developers v2
DevOps Tools for Java Developers v2Stephen Chin
 
10 Ways Everyone Can Support the Java Community
10 Ways Everyone Can Support the Java Community10 Ways Everyone Can Support the Java Community
10 Ways Everyone Can Support the Java CommunityStephen Chin
 
Java Clients and JavaFX: The Definitive Guide
Java Clients and JavaFX: The Definitive GuideJava Clients and JavaFX: The Definitive Guide
Java Clients and JavaFX: The Definitive GuideStephen Chin
 
DevOps Tools for Java Developers
DevOps Tools for Java DevelopersDevOps Tools for Java Developers
DevOps Tools for Java DevelopersStephen Chin
 
Java Clients and JavaFX - Presented to LJC
Java Clients and JavaFX - Presented to LJCJava Clients and JavaFX - Presented to LJC
Java Clients and JavaFX - Presented to LJCStephen Chin
 
RetroPi Handheld Raspberry Pi Gaming Console
RetroPi Handheld Raspberry Pi Gaming ConsoleRetroPi Handheld Raspberry Pi Gaming Console
RetroPi Handheld Raspberry Pi Gaming ConsoleStephen Chin
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)Stephen Chin
 
Confessions of a Former Agile Methodologist (JFrog Edition)
Confessions of a Former Agile Methodologist (JFrog Edition)Confessions of a Former Agile Methodologist (JFrog Edition)
Confessions of a Former Agile Methodologist (JFrog Edition)Stephen Chin
 
Devoxx4Kids Lego Workshop
Devoxx4Kids Lego WorkshopDevoxx4Kids Lego Workshop
Devoxx4Kids Lego WorkshopStephen Chin
 
Raspberry Pi with Java (JJUG)
Raspberry Pi with Java (JJUG)Raspberry Pi with Java (JJUG)
Raspberry Pi with Java (JJUG)Stephen Chin
 
Confessions of a Former Agile Methodologist
Confessions of a Former Agile MethodologistConfessions of a Former Agile Methodologist
Confessions of a Former Agile MethodologistStephen Chin
 
Internet of Things Magic Show
Internet of Things Magic ShowInternet of Things Magic Show
Internet of Things Magic ShowStephen Chin
 
Zombie Time - JSR 310 for the Undead
Zombie Time - JSR 310 for the UndeadZombie Time - JSR 310 for the Undead
Zombie Time - JSR 310 for the UndeadStephen Chin
 
JCrete Embedded Java Workshop
JCrete Embedded Java WorkshopJCrete Embedded Java Workshop
JCrete Embedded Java WorkshopStephen Chin
 
Oracle IoT Kids Workshop
Oracle IoT Kids WorkshopOracle IoT Kids Workshop
Oracle IoT Kids WorkshopStephen Chin
 
OpenJFX on Android and Devices
OpenJFX on Android and DevicesOpenJFX on Android and Devices
OpenJFX on Android and DevicesStephen Chin
 
Java on Raspberry Pi Lab
Java on Raspberry Pi LabJava on Raspberry Pi Lab
Java on Raspberry Pi LabStephen Chin
 
Java 8 for Tablets, Pis, and Legos
Java 8 for Tablets, Pis, and LegosJava 8 for Tablets, Pis, and Legos
Java 8 for Tablets, Pis, and LegosStephen Chin
 
Devoxx4Kids NAO Workshop
Devoxx4Kids NAO WorkshopDevoxx4Kids NAO Workshop
Devoxx4Kids NAO WorkshopStephen Chin
 

Plus de Stephen Chin (20)

DevOps Tools for Java Developers v2
DevOps Tools for Java Developers v2DevOps Tools for Java Developers v2
DevOps Tools for Java Developers v2
 
10 Ways Everyone Can Support the Java Community
10 Ways Everyone Can Support the Java Community10 Ways Everyone Can Support the Java Community
10 Ways Everyone Can Support the Java Community
 
Java Clients and JavaFX: The Definitive Guide
Java Clients and JavaFX: The Definitive GuideJava Clients and JavaFX: The Definitive Guide
Java Clients and JavaFX: The Definitive Guide
 
DevOps Tools for Java Developers
DevOps Tools for Java DevelopersDevOps Tools for Java Developers
DevOps Tools for Java Developers
 
Java Clients and JavaFX - Presented to LJC
Java Clients and JavaFX - Presented to LJCJava Clients and JavaFX - Presented to LJC
Java Clients and JavaFX - Presented to LJC
 
RetroPi Handheld Raspberry Pi Gaming Console
RetroPi Handheld Raspberry Pi Gaming ConsoleRetroPi Handheld Raspberry Pi Gaming Console
RetroPi Handheld Raspberry Pi Gaming Console
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)
 
Confessions of a Former Agile Methodologist (JFrog Edition)
Confessions of a Former Agile Methodologist (JFrog Edition)Confessions of a Former Agile Methodologist (JFrog Edition)
Confessions of a Former Agile Methodologist (JFrog Edition)
 
Devoxx4Kids Lego Workshop
Devoxx4Kids Lego WorkshopDevoxx4Kids Lego Workshop
Devoxx4Kids Lego Workshop
 
Raspberry Pi with Java (JJUG)
Raspberry Pi with Java (JJUG)Raspberry Pi with Java (JJUG)
Raspberry Pi with Java (JJUG)
 
Confessions of a Former Agile Methodologist
Confessions of a Former Agile MethodologistConfessions of a Former Agile Methodologist
Confessions of a Former Agile Methodologist
 
Internet of Things Magic Show
Internet of Things Magic ShowInternet of Things Magic Show
Internet of Things Magic Show
 
Zombie Time - JSR 310 for the Undead
Zombie Time - JSR 310 for the UndeadZombie Time - JSR 310 for the Undead
Zombie Time - JSR 310 for the Undead
 
JCrete Embedded Java Workshop
JCrete Embedded Java WorkshopJCrete Embedded Java Workshop
JCrete Embedded Java Workshop
 
Oracle IoT Kids Workshop
Oracle IoT Kids WorkshopOracle IoT Kids Workshop
Oracle IoT Kids Workshop
 
OpenJFX on Android and Devices
OpenJFX on Android and DevicesOpenJFX on Android and Devices
OpenJFX on Android and Devices
 
Java on Raspberry Pi Lab
Java on Raspberry Pi LabJava on Raspberry Pi Lab
Java on Raspberry Pi Lab
 
Java 8 for Tablets, Pis, and Legos
Java 8 for Tablets, Pis, and LegosJava 8 for Tablets, Pis, and Legos
Java 8 for Tablets, Pis, and Legos
 
DukeScript
DukeScriptDukeScript
DukeScript
 
Devoxx4Kids NAO Workshop
Devoxx4Kids NAO WorkshopDevoxx4Kids NAO Workshop
Devoxx4Kids NAO Workshop
 

Repository Management with JFrog Artifactory

  • 1. Release Management with Artifactory Yoav Landman & Frederic Simon
  • 2. 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
  • 3. Agenda ★ Intro ★ Configuration tips ★ Searches ★ Reproducible builds ★ Advanced features ★ Smart staging and promotion ★ Web Start and JavaFX ★ Gradle integration 3
  • 4. 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
  • 5. 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
  • 6. 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. 7
  • 8. 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. 9
  • 10. 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
  • 11. 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
  • 12. 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
  • 14. The build jobs pyramid ★ SCM update ★ Retrieve ★ Test ★ Deploy Build time unit tests smoke tests Integ, tests GA Retrieve/Deploy No. of builds 14
  • 15. 15
  • 16. Advanced repository features ★ Checksum-based storage ★ Handling download bursts ★ Verifying uploaded artifacts ★ Locking ★ Cleanup bad remote repo references ★ Built-in metadata 16
  • 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 17
  • 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 18
  • 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 19
  • 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) 20
  • 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 21
  • 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! 22
  • 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 23
  • 24. Search-based management ★ 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 24
  • 25. 25
  • 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 26
  • 27. 27
  • 28. Gradle integration ★ 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 28
  • 29. Thank You! Q&A 29