SlideShare une entreprise Scribd logo
1  sur  39
Large-Scale Automation with Jenkins
Kohsuke Kawaguchi / kk@kohsuke.org / @kohsukekawa
Architect, CloudBees, Inc.




                 ©2010 CloudBees, Inc. All Rights
                           Reserved
Have you met Jenkins?
http://jenkins-ci.org/


• #1 OSS CI server
      – Written in Java
      – 47K+ installations
• About 7 years old
• Two key emphasis
      – Easy to install/use
      – Extensible via 600+ plugins



                         ©2010 CloudBees, Inc. All Rights   2
                                   Reserved
Context
• First steps in Jenkins usage
  – Build your project
  – Run tests on your project
  – Maybe run code analysis tools




                Where to go from here?
                ©2010 CloudBees, Inc. All Rights   3
                          Reserved
Workflow!
• By which I mean interconnected jobs

• Why?
  – Lots of manual process
  – Dividing by the responsibility boundary
  – Single job isn’t meant for complex things
  – Reusing pieces



                 ©2010 CloudBees, Inc. All Rights   4
                           Reserved
Parameterized Builds
• Plain jobs can be thought of like a
  procedure without any input
    void buildAcmeLibrary() { … }


• Ability to pass parameters make it more
  useful
    void buildAcmeLibrary(targetPlatform) { … }



                    ©2010 CloudBees, Inc. All Rights   5
                              Reserved
Three Things You Need To Do
• #1: Define Parameters




 Lots of different parameter types




                           ©2010 CloudBees, Inc. All Rights   6
                                     Reserved
Three Things You Need To Do
• #2: Refer to parameter values
  – As variable expansions: ${Browser}
  – As environment variables from your builds
  – Some parameter types expose data in
    different ways
    • File parameter




                  ©2010 CloudBees, Inc. All Rights   7
                            Reserved
Three Things You Need To Do
• #3: Specify actual values when you run




               ©2010 CloudBees, Inc. All Rights   8
                         Reserved
Parameterized Trigger Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin


• Call other jobs (with parameters)
     – Wait for their completions (optional)
                                                          Foo


                      Sub1                              Sub2                  Sub3


                                                         Foo


                                                          Sub1

                                                          Sub2


                                           ©2010 CloudBees, Inc. All Rights          9
                                                     Reserved
Multi-Configuration Project
• You often do the same thing with slight
  variations
  – Compile C++ code for different platforms
  – Test with different browsers
  – Or more generally, think of it as

        for (x in [a,b,c]) {
          for (y in [d,e,f]) {
            doSomethingWith(x,y,...);
          }
        }


                     ©2010 CloudBees, Inc. All Rights   10
                               Reserved
Model
• Define axes
  – One axis ≈ one for loop

• Choose from pre-defined types of Axis
  – Generic axis: arbitrary values exposed as
    environment variables
  – Slave axis: pick slaves by their names or
    their labels
    • e.g., linux, solaris, and windows
  – JDK axis

                   ©2010 CloudBees, Inc. All Rights   11
                             Reserved
Multi-Configuration Project Gimmicks
• Filtering
   – Otherwise combinations increase exponentially
   – Not all combinations make sense
   – Use boolean expression to trim down the size
      (label==“windows”).implies(browser==“iexplore”) &&
      (label==“mac”).implies(browser==“safari”)

   – Or tell Jenkins to cut the workload to N%
      • Jenkins will thin out the combinations by itself




                        ©2010 CloudBees, Inc. All Rights   12
                                  Reserved
Demo




       ©2010 CloudBees, Inc. All Rights
                 Reserved
Other Simple Choreography Tools
https://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin


• Join Plugin




                                            ©2010 CloudBees, Inc. All Rights   14
                                                      Reserved
When Jobs Start Working Together…
https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin


• Copy Artifact Plugin
     – Copy artifacts into a workspace
     – By using various criteria


                     acme-build #15                                               acme-test #24



                                     foo.jar                                               foo.jar




                                               ©2010 CloudBees, Inc. All Rights                      15
                                                         Reserved
Copy Artifact vs External Repository
• Almost as if artifacts are versioned
     acme-build #10
                                             Last saved build
        acme-build #11
           acme-build #12
                                                      Last stable build
              acme-build #13
                 acme-build #14
                    acme-build #15



                                 foo.jar




                       ©2010 CloudBees, Inc. All Rights                   16
                                 Reserved
Labeling Builds Is Useful
• Especially when labels have semantics
                                         Deployed to production

      acme-build #10
                                                Signed off to QA
         acme-build #11
            acme-build #12
                                                        Last stable build
               acme-build #13
                  acme-build #14
                     acme-build #15



                                   foo.jar




                     ©2010 CloudBees, Inc. All Rights                       17
                               Reserved
Labeling Builds Is Useful
• More so when you automate them
• Take “Signed off to QA” label for example

                                                   acme-devtest #15
     acme-build #12

               foo.jar
                                                  acme-findbugs #22


             Signed off to QA




                         ©2010 CloudBees, Inc. All Rights             18
                                   Reserved
Introducing Promoted Builds Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Promoted+Builds+Plugin


• Promotion = act of giving a build a label
• You specify:
     – Promotion criteria
     – what happens after promotion


• Label is a nice hand-off between teams
     – It’s like sausage making process



                                           ©2010 CloudBees, Inc. All Rights   19
                                                     Reserved
Demo




       ©2010 CloudBees, Inc. All Rights
                 Reserved
Maven Repository Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Maven+Repository+Server


• Virtual Maven repository
     – Expose artifacts from specific build
     – And its upstream builds




                                          ©2010 CloudBees, Inc. All Rights    21
                                                    Reserved
http://www.flickr.com/photos/andresmusta/7990193487




©2010 CloudBees, Inc. All Rights                                22
          Reserved
Challenge: Visualization
• Edge traversal
  breaks down on large
  workflow




              ©2010 CloudBees, Inc. All Rights   23
                        Reserved
Dependency Graph
https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin


• Uses GraphViz to draw a
  graph of relations

• Supports copy-artifact
  plugin




                                         ©2010 CloudBees, Inc. All Rights   24
                                                   Reserved
Build Pipeline Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin


• It shows how far each change has gone




                                            ©2010 CloudBees, Inc. All Rights   25
                                                      Reserved
Fingerprint
• Yet another angle to look at data
• Think of it as a lifelog for a blob

Air travel                                           Jenkins

Airline check-in/TSA/immigration Jobs and workflow

My going through immigration                         Build #13

My travel experience                                 Fingerprint view

                  ©2010 CloudBees, Inc. All Rights                      26
                            Reserved
Fingerprint: Mechanism
• MD5 checksum of a file
  – Recorded against builds that it appeared
  – (And actions that were taken)

      acme-build #15                                         acme-test #13



                 MD5=                                                   MD5=
               604e7e07                                               604e7e07




                          ©2010 CloudBees, Inc. All Rights                       27
                                    Reserved
Fingerprint: Why?
• Track down where it came from
  – My component integrates to product
    XYZ, and a bug was reported against XYZ
    3.0.5. Which build of the component did it
    contain?
• Cross-correlate jobs that aren’t directly
  related



                 ©2010 CloudBees, Inc. All Rights   28
                           Reserved
Next Step in Workflow


     ✓    Aggregation of results



      ?   Aggregation of definitions




              ©2010 CloudBees, Inc. All Rights   29
                        Reserved
Build Flow Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin


• Groovy DSL for kicking builds
     – High-level primitives
     – Ability to define abstractions

                 b = build(“acme-build”)
                 guard {
                       parallel (
                            { build(“acme-test1”, param1:b.number) },
                            { build(“acme-test2”, param1:b.number) }
                       )
                 } rescue {
                       build(“acme-teardown”)
                 }


                                           ©2010 CloudBees, Inc. All Rights   30
                                                     Reserved
Demo




       ©2010 CloudBees, Inc. All Rights
                 Reserved
Jenkow Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Jenkow+Plugin


• Embed BPMN workflow
  engine in Jenkins
     – Timeout, fork, join, …


• Workflow is version
  controlled in Git
     – Push to Jenkins to load
       them up


                                           ©2010 CloudBees, Inc. All Rights   32
                                                     Reserved
Next Step in Workflow


  ✓   Choreography defined in one place



  ?   Everything defined in one place




              ©2010 CloudBees, Inc. All Rights   33
                        Reserved
Job DSL Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL+Plugin


• Groovy DSL for defining jobs
      def project = "jenkinsci/jenkins"
      def branchApi = new URL("https://api.github.com/repos/${project}/branches")
      def branches = new JsonSlurper().parse(branchApi.newReader())
      branches.each { b ->
        job {
           name "${project}-${b.name}".replaceAll('/','-')
           scm {
             git("git://github.com/${project}.git", b.name)
           }
           steps {
             maven("install")
           }
        }
      }




                                           ©2010 CloudBees, Inc. All Rights         34
                                                     Reserved
Or More Likely…
• Take Existing Job, Make Adjustments
  def project = "jenkinsci/jenkins"
  def branchApi = new URL("https://api.github.com/repos/${project}/branches")
  def branches = new JsonSlurper().parse(branchApi.newReader())
  branches.each { b ->
    job {
       using "jenkins-build"
       name "${project}-${b.name}".replaceAll('/','-')
       scm {
         git("git://github.com/${project}.git", b.name)
       }
    }
  }




                             ©2010 CloudBees, Inc. All Rights                   35
                                       Reserved
Job DSL Plugin
• You can go down to XML definitions

• The program itself executes as Jenkins
  job
  – Control over when it executes
  – Store definitions in VCS




                ©2010 CloudBees, Inc. All Rights   36
                          Reserved
Or just a bit of Perl/Python/Ruby scripts
• Programmatically CRUD jobs

  $ ssh jenkins get-job foo 
  | sed -e 's/old.gitserver.com/new.gitserver.com/g’ 
  | ssh jenkins update-job foo




                              ©2010 CloudBees, Inc. All Rights   37
                                        Reserved
Templates (in Jenkins Enterprise by
CloudBees)
http://www.cloudbees.com/jenkins-enterprise-by-cloudbees-overview.cb


• Share some traits with Job DSL
     – Define job once, generate many variations
     – Update definition, and reflect it everywhere
• But different
     – Templates are defined in GUI, not in a
       program
     – Individual variations are manually updated
       by users


                                         ©2010 CloudBees, Inc. All Rights   38
                                                   Reserved
Conclusion
• Lots of useful building blocks for
  automating even more
  – That means many people are doing this


• Take your automation to the next level




                ©2010 CloudBees, Inc. All Rights   39
                          Reserved

Contenu connexe

Tendances

Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platformdcjuengst
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsMandi Walls
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014CloudBees
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CloudBees
 
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)CloudBees
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsCloudBees
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...CloudBees
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsTomohide Kakeya
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Arun Gupta
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with JenkinsEdureka!
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeBrian Dawson
 
Workflow, container, and beyond
Workflow, container, and beyondWorkflow, container, and beyond
Workflow, container, and beyondKohsuke Kawaguchi
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandTroublemaker Khunpech
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentSven Peters
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and TellE. Camden Fisher
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsBrice Argenson
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsNETWAYS
 

Tendances (20)

Who *is* Jenkins?
Who *is* Jenkins?Who *is* Jenkins?
Who *is* Jenkins?
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
 
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with Jenkins
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
 
Workflow, container, and beyond
Workflow, container, and beyondWorkflow, container, and beyond
Workflow, container, and beyond
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
 

En vedette

Continuous Deployment - Lean LA
Continuous Deployment - Lean LAContinuous Deployment - Lean LA
Continuous Deployment - Lean LAAsh Maurya
 
Selenium Page Objects101
Selenium Page Objects101Selenium Page Objects101
Selenium Page Objects101Adam Goucher
 
Reliable tests with selenium web driver
Reliable tests with selenium web driverReliable tests with selenium web driver
Reliable tests with selenium web driverPawelPabich
 
JavaScript Testing VIA Selenium
JavaScript Testing VIA SeleniumJavaScript Testing VIA Selenium
JavaScript Testing VIA SeleniumAdam Christian
 
Testing at Yammer with FooUnit, Jellyfish, and Sauce Labs
Testing at Yammer with FooUnit, Jellyfish, and Sauce LabsTesting at Yammer with FooUnit, Jellyfish, and Sauce Labs
Testing at Yammer with FooUnit, Jellyfish, and Sauce LabsSauce Labs
 
Microsoft SQL Server Continuous Integration
Microsoft SQL Server Continuous IntegrationMicrosoft SQL Server Continuous Integration
Microsoft SQL Server Continuous IntegrationMark Ginnebaugh
 
Jenkins Test Automation with codeBeamer ALM
Jenkins Test Automation with codeBeamer ALMJenkins Test Automation with codeBeamer ALM
Jenkins Test Automation with codeBeamer ALMIntland Software GmbH
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and GroovyKiyotaka Oku
 
A Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::ClassA Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::ClassCurtis Poe
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA EngineerYan Alexeenko
 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytestBrianna Laugher
 
QA in DevOps: Transformation thru Automation via Jenkins
QA in DevOps:  Transformation thru Automation via JenkinsQA in DevOps:  Transformation thru Automation via Jenkins
QA in DevOps: Transformation thru Automation via JenkinsTatyana Kravtsov
 
JUnit Kung Fu: Getting More Out of Your Unit Tests
JUnit Kung Fu: Getting More Out of Your Unit TestsJUnit Kung Fu: Getting More Out of Your Unit Tests
JUnit Kung Fu: Getting More Out of Your Unit TestsJohn Ferguson Smart Limited
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable productJulian Simpson
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovyjgcloudbees
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users AnonymousDave Haeffner
 
Mobile Test Automation at eBay
Mobile Test Automation at eBayMobile Test Automation at eBay
Mobile Test Automation at eBayDominik Dary
 

En vedette (20)

Continuous Deployment - Lean LA
Continuous Deployment - Lean LAContinuous Deployment - Lean LA
Continuous Deployment - Lean LA
 
Selenium for Designers
Selenium for DesignersSelenium for Designers
Selenium for Designers
 
Selenium Page Objects101
Selenium Page Objects101Selenium Page Objects101
Selenium Page Objects101
 
Reliable tests with selenium web driver
Reliable tests with selenium web driverReliable tests with selenium web driver
Reliable tests with selenium web driver
 
JavaScript Testing VIA Selenium
JavaScript Testing VIA SeleniumJavaScript Testing VIA Selenium
JavaScript Testing VIA Selenium
 
Testing at Yammer with FooUnit, Jellyfish, and Sauce Labs
Testing at Yammer with FooUnit, Jellyfish, and Sauce LabsTesting at Yammer with FooUnit, Jellyfish, and Sauce Labs
Testing at Yammer with FooUnit, Jellyfish, and Sauce Labs
 
Microsoft SQL Server Continuous Integration
Microsoft SQL Server Continuous IntegrationMicrosoft SQL Server Continuous Integration
Microsoft SQL Server Continuous Integration
 
Jenkins Test Automation with codeBeamer ALM
Jenkins Test Automation with codeBeamer ALMJenkins Test Automation with codeBeamer ALM
Jenkins Test Automation with codeBeamer ALM
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
 
A Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::ClassA Whirlwind Tour of Test::Class
A Whirlwind Tour of Test::Class
 
(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer(Seleniumcamp) Selenium RC for QA Engineer
(Seleniumcamp) Selenium RC for QA Engineer
 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytest
 
QA in DevOps: Transformation thru Automation via Jenkins
QA in DevOps:  Transformation thru Automation via JenkinsQA in DevOps:  Transformation thru Automation via Jenkins
QA in DevOps: Transformation thru Automation via Jenkins
 
JUnit Kung Fu: Getting More Out of Your Unit Tests
JUnit Kung Fu: Getting More Out of Your Unit TestsJUnit Kung Fu: Getting More Out of Your Unit Tests
JUnit Kung Fu: Getting More Out of Your Unit Tests
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users Anonymous
 
Mobile Test Automation at eBay
Mobile Test Automation at eBayMobile Test Automation at eBay
Mobile Test Automation at eBay
 
Jenkins automation
Jenkins automationJenkins automation
Jenkins automation
 
There is no snapshot
There is no snapshotThere is no snapshot
There is no snapshot
 

Similaire à Large scale automation with jenkins

Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015Chris Ciborowski
 
Introduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guideIntroduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guideAndrew Bayer
 
Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer CommunityKohsuke Kawaguchi
 
Mainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapMainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapDevOps.com
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDocker, Inc.
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2makker_nl
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentKohsuke Kawaguchi
 
Docker and Jenkins [as code]
Docker and Jenkins [as code]Docker and Jenkins [as code]
Docker and Jenkins [as code]Mark Waite
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the CloudCloudBees
 
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...Carl Tyler
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)Simon Haslam
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1makker_nl
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing dockerSascha Brinkmann
 
The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)Simon Haslam
 
Get the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewGet the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewForgeRock
 
BP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoBP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoSerdar Basegmez
 

Similaire à Large scale automation with jenkins (20)

Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015Nebulaworks Docker Overview 09-22-2015
Nebulaworks Docker Overview 09-22-2015
 
Sjug aug 2010_cloud
Sjug aug 2010_cloudSjug aug 2010_cloud
Sjug aug 2010_cloud
 
Introduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guideIntroduction to Jenkins X - a beginner's guide
Introduction to Jenkins X - a beginner's guide
 
Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer Community
 
Mainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled RoadmapMainframe DevOps: A Zowe CLI-enabled Roadmap
Mainframe DevOps: A Zowe CLI-enabled Roadmap
 
docker
dockerdocker
docker
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build Environment
 
Elastic build environment
Elastic build environmentElastic build environment
Elastic build environment
 
Docker and Jenkins [as code]
Docker and Jenkins [as code]Docker and Jenkins [as code]
Docker and Jenkins [as code]
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the Cloud
 
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing docker
 
Cicd.pdf
Cicd.pdfCicd.pdf
Cicd.pdf
 
The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)
 
Get the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewGet the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - Overview
 
BP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoBP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM Domino
 

Plus de Kohsuke Kawaguchi

Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Kohsuke Kawaguchi
 
On sharing ideas & sharing code
On sharing ideas & sharing codeOn sharing ideas & sharing code
On sharing ideas & sharing codeKohsuke Kawaguchi
 
コードの互換性と進化の両立
コードの互換性と進化の両立コードの互換性と進化の両立
コードの互換性と進化の両立Kohsuke Kawaguchi
 
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreJenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreKohsuke Kawaguchi
 
Jenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteJenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteKohsuke Kawaguchi
 
How we made jenkins community
How we made jenkins communityHow we made jenkins community
How we made jenkins communityKohsuke Kawaguchi
 
Jenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoJenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoKohsuke Kawaguchi
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Kohsuke Kawaguchi
 
ここ最近のJenkins新機能
ここ最近のJenkins新機能ここ最近のJenkins新機能
ここ最近のJenkins新機能Kohsuke Kawaguchi
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京Kohsuke Kawaguchi
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkinsKohsuke Kawaguchi
 
Jenkins user conference 2011
Jenkins user conference 2011Jenkins user conference 2011
Jenkins user conference 2011Kohsuke Kawaguchi
 
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発Kohsuke Kawaguchi
 

Plus de Kohsuke Kawaguchi (20)

Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015
 
On sharing ideas & sharing code
On sharing ideas & sharing codeOn sharing ideas & sharing code
On sharing ideas & sharing code
 
コードの互換性と進化の両立
コードの互換性と進化の両立コードの互換性と進化の両立
コードの互換性と進化の両立
 
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreJenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
 
Jenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteJenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: Keynote
 
Jenkins State of union 2013
Jenkins State of union 2013Jenkins State of union 2013
Jenkins State of union 2013
 
How we made jenkins community
How we made jenkins communityHow we made jenkins community
How we made jenkins community
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 
Jenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoJenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San Francisco
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)
 
ここ最近のJenkins新機能
ここ最近のJenkins新機能ここ最近のJenkins新機能
ここ最近のJenkins新機能
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京
 
Dev@cloudの実装
Dev@cloudの実装Dev@cloudの実装
Dev@cloudの実装
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
Jenkins user conference 2011
Jenkins user conference 2011Jenkins user conference 2011
Jenkins user conference 2011
 
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
 
Current state of Jenkins
Current state of JenkinsCurrent state of Jenkins
Current state of Jenkins
 
Jenkins勉強会第二回
Jenkins勉強会第二回Jenkins勉強会第二回
Jenkins勉強会第二回
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 

Dernier

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Dernier (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Large scale automation with jenkins

  • 1. Large-Scale Automation with Jenkins Kohsuke Kawaguchi / kk@kohsuke.org / @kohsukekawa Architect, CloudBees, Inc. ©2010 CloudBees, Inc. All Rights Reserved
  • 2. Have you met Jenkins? http://jenkins-ci.org/ • #1 OSS CI server – Written in Java – 47K+ installations • About 7 years old • Two key emphasis – Easy to install/use – Extensible via 600+ plugins ©2010 CloudBees, Inc. All Rights 2 Reserved
  • 3. Context • First steps in Jenkins usage – Build your project – Run tests on your project – Maybe run code analysis tools Where to go from here? ©2010 CloudBees, Inc. All Rights 3 Reserved
  • 4. Workflow! • By which I mean interconnected jobs • Why? – Lots of manual process – Dividing by the responsibility boundary – Single job isn’t meant for complex things – Reusing pieces ©2010 CloudBees, Inc. All Rights 4 Reserved
  • 5. Parameterized Builds • Plain jobs can be thought of like a procedure without any input void buildAcmeLibrary() { … } • Ability to pass parameters make it more useful void buildAcmeLibrary(targetPlatform) { … } ©2010 CloudBees, Inc. All Rights 5 Reserved
  • 6. Three Things You Need To Do • #1: Define Parameters Lots of different parameter types ©2010 CloudBees, Inc. All Rights 6 Reserved
  • 7. Three Things You Need To Do • #2: Refer to parameter values – As variable expansions: ${Browser} – As environment variables from your builds – Some parameter types expose data in different ways • File parameter ©2010 CloudBees, Inc. All Rights 7 Reserved
  • 8. Three Things You Need To Do • #3: Specify actual values when you run ©2010 CloudBees, Inc. All Rights 8 Reserved
  • 9. Parameterized Trigger Plugin https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin • Call other jobs (with parameters) – Wait for their completions (optional) Foo Sub1 Sub2 Sub3 Foo Sub1 Sub2 ©2010 CloudBees, Inc. All Rights 9 Reserved
  • 10. Multi-Configuration Project • You often do the same thing with slight variations – Compile C++ code for different platforms – Test with different browsers – Or more generally, think of it as for (x in [a,b,c]) { for (y in [d,e,f]) { doSomethingWith(x,y,...); } } ©2010 CloudBees, Inc. All Rights 10 Reserved
  • 11. Model • Define axes – One axis ≈ one for loop • Choose from pre-defined types of Axis – Generic axis: arbitrary values exposed as environment variables – Slave axis: pick slaves by their names or their labels • e.g., linux, solaris, and windows – JDK axis ©2010 CloudBees, Inc. All Rights 11 Reserved
  • 12. Multi-Configuration Project Gimmicks • Filtering – Otherwise combinations increase exponentially – Not all combinations make sense – Use boolean expression to trim down the size (label==“windows”).implies(browser==“iexplore”) && (label==“mac”).implies(browser==“safari”) – Or tell Jenkins to cut the workload to N% • Jenkins will thin out the combinations by itself ©2010 CloudBees, Inc. All Rights 12 Reserved
  • 13. Demo ©2010 CloudBees, Inc. All Rights Reserved
  • 14. Other Simple Choreography Tools https://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin • Join Plugin ©2010 CloudBees, Inc. All Rights 14 Reserved
  • 15. When Jobs Start Working Together… https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin • Copy Artifact Plugin – Copy artifacts into a workspace – By using various criteria acme-build #15 acme-test #24 foo.jar foo.jar ©2010 CloudBees, Inc. All Rights 15 Reserved
  • 16. Copy Artifact vs External Repository • Almost as if artifacts are versioned acme-build #10 Last saved build acme-build #11 acme-build #12 Last stable build acme-build #13 acme-build #14 acme-build #15 foo.jar ©2010 CloudBees, Inc. All Rights 16 Reserved
  • 17. Labeling Builds Is Useful • Especially when labels have semantics Deployed to production acme-build #10 Signed off to QA acme-build #11 acme-build #12 Last stable build acme-build #13 acme-build #14 acme-build #15 foo.jar ©2010 CloudBees, Inc. All Rights 17 Reserved
  • 18. Labeling Builds Is Useful • More so when you automate them • Take “Signed off to QA” label for example acme-devtest #15 acme-build #12 foo.jar acme-findbugs #22 Signed off to QA ©2010 CloudBees, Inc. All Rights 18 Reserved
  • 19. Introducing Promoted Builds Plugin https://wiki.jenkins-ci.org/display/JENKINS/Promoted+Builds+Plugin • Promotion = act of giving a build a label • You specify: – Promotion criteria – what happens after promotion • Label is a nice hand-off between teams – It’s like sausage making process ©2010 CloudBees, Inc. All Rights 19 Reserved
  • 20. Demo ©2010 CloudBees, Inc. All Rights Reserved
  • 21. Maven Repository Plugin https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Maven+Repository+Server • Virtual Maven repository – Expose artifacts from specific build – And its upstream builds ©2010 CloudBees, Inc. All Rights 21 Reserved
  • 23. Challenge: Visualization • Edge traversal breaks down on large workflow ©2010 CloudBees, Inc. All Rights 23 Reserved
  • 24. Dependency Graph https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin • Uses GraphViz to draw a graph of relations • Supports copy-artifact plugin ©2010 CloudBees, Inc. All Rights 24 Reserved
  • 25. Build Pipeline Plugin https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin • It shows how far each change has gone ©2010 CloudBees, Inc. All Rights 25 Reserved
  • 26. Fingerprint • Yet another angle to look at data • Think of it as a lifelog for a blob Air travel Jenkins Airline check-in/TSA/immigration Jobs and workflow My going through immigration Build #13 My travel experience Fingerprint view ©2010 CloudBees, Inc. All Rights 26 Reserved
  • 27. Fingerprint: Mechanism • MD5 checksum of a file – Recorded against builds that it appeared – (And actions that were taken) acme-build #15 acme-test #13 MD5= MD5= 604e7e07 604e7e07 ©2010 CloudBees, Inc. All Rights 27 Reserved
  • 28. Fingerprint: Why? • Track down where it came from – My component integrates to product XYZ, and a bug was reported against XYZ 3.0.5. Which build of the component did it contain? • Cross-correlate jobs that aren’t directly related ©2010 CloudBees, Inc. All Rights 28 Reserved
  • 29. Next Step in Workflow ✓ Aggregation of results ? Aggregation of definitions ©2010 CloudBees, Inc. All Rights 29 Reserved
  • 30. Build Flow Plugin https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin • Groovy DSL for kicking builds – High-level primitives – Ability to define abstractions b = build(“acme-build”) guard { parallel ( { build(“acme-test1”, param1:b.number) }, { build(“acme-test2”, param1:b.number) } ) } rescue { build(“acme-teardown”) } ©2010 CloudBees, Inc. All Rights 30 Reserved
  • 31. Demo ©2010 CloudBees, Inc. All Rights Reserved
  • 32. Jenkow Plugin https://wiki.jenkins-ci.org/display/JENKINS/Jenkow+Plugin • Embed BPMN workflow engine in Jenkins – Timeout, fork, join, … • Workflow is version controlled in Git – Push to Jenkins to load them up ©2010 CloudBees, Inc. All Rights 32 Reserved
  • 33. Next Step in Workflow ✓ Choreography defined in one place ? Everything defined in one place ©2010 CloudBees, Inc. All Rights 33 Reserved
  • 34. Job DSL Plugin https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL+Plugin • Groovy DSL for defining jobs def project = "jenkinsci/jenkins" def branchApi = new URL("https://api.github.com/repos/${project}/branches") def branches = new JsonSlurper().parse(branchApi.newReader()) branches.each { b -> job { name "${project}-${b.name}".replaceAll('/','-') scm { git("git://github.com/${project}.git", b.name) } steps { maven("install") } } } ©2010 CloudBees, Inc. All Rights 34 Reserved
  • 35. Or More Likely… • Take Existing Job, Make Adjustments def project = "jenkinsci/jenkins" def branchApi = new URL("https://api.github.com/repos/${project}/branches") def branches = new JsonSlurper().parse(branchApi.newReader()) branches.each { b -> job { using "jenkins-build" name "${project}-${b.name}".replaceAll('/','-') scm { git("git://github.com/${project}.git", b.name) } } } ©2010 CloudBees, Inc. All Rights 35 Reserved
  • 36. Job DSL Plugin • You can go down to XML definitions • The program itself executes as Jenkins job – Control over when it executes – Store definitions in VCS ©2010 CloudBees, Inc. All Rights 36 Reserved
  • 37. Or just a bit of Perl/Python/Ruby scripts • Programmatically CRUD jobs $ ssh jenkins get-job foo | sed -e 's/old.gitserver.com/new.gitserver.com/g’ | ssh jenkins update-job foo ©2010 CloudBees, Inc. All Rights 37 Reserved
  • 38. Templates (in Jenkins Enterprise by CloudBees) http://www.cloudbees.com/jenkins-enterprise-by-cloudbees-overview.cb • Share some traits with Job DSL – Define job once, generate many variations – Update definition, and reflect it everywhere • But different – Templates are defined in GUI, not in a program – Individual variations are manually updated by users ©2010 CloudBees, Inc. All Rights 38 Reserved
  • 39. Conclusion • Lots of useful building blocks for automating even more – That means many people are doing this • Take your automation to the next level ©2010 CloudBees, Inc. All Rights 39 Reserved

Notes de l'éditeur

  1. Create JDK axis and browser axisShow java –fullversion and sleep 5Do a couple of buildsIndex%2==0Touch stone build
  2. Compare how far production is behindSingle build number to rule them all
  3. Analogy with airplane travel:Define the procedure that the immigration officers gothrough. Each airport is like a job.People goes through airline counter, security check, border control, is like a workflowWith fingerprint, what we are talking is looking at individual traveler and how he went through the whole process
  4. Say Hello + BuildFlow