SlideShare une entreprise Scribd logo
1  sur  40
Jenkins User Conference   New York, May 17 2012   #jenkinsconf


       Yale Build and Deploy



                     E Camden Fisher
                     Yale University ITS
Jenkins User Conference     New York, May 17 2012   #jenkinsconf



   Who am I?

                   E Camden Fisher
                    Technical Lead
        Unix Infrastructure and Virtualization
          Information Technology Services
                     Yale University
              camden.fisher@yale.edu
                          @fishnix
Jenkins User Conference   New York, May 17 2012   #jenkinsconf




Who Uses Jenkins @Yale?
Jenkins User Conference           New York, May 17 2012   #jenkinsconf



   Let’s Not Forget Continuous Integration!

   !       Maintain a Single Source Repository
   !       Automate the Build
   !       Make Your Build Self-Testing
   !       Everyone Commits to the Mainline Every Day
   !       Every Commit Should Build the Mainline on an
           Integration Machine
   !       Keep the Build Fast
   !       Test in a Clone of the Production Environment
   !       Make it Easy for Anyone to Get the Latest Executable
   !       Everyone can see what's happening
   !       Automate Deployment

   Avoid "Integration Hell!!”
Jenkins User Conference   New York, May 17 2012   #jenkinsconf



   Why we chose Jenkins?


   !   Easy!

   !   Extensible

   !   Scalable

   !   Flexible

   !   Open Source

   !   Supported!
Jenkins User Conference         New York, May 17 2012   #jenkinsconf



   Yale History Lesson

   Application lifecycle is a progression

   !   Source Code Management

   !   Maven and Artifactory

   !   Building and Testing with Jenkins

   !   Container Configurable artifacts

   !   Runtime Configurable Containers

   !   Managed deployments with Jenkins
Jenkins User Conference   New York, May 17 2012    #jenkinsconf



   SCM


                             SCCS
     cp –pr
                                                  RCS

                     Subversion


      CVS                                         VSS
Jenkins User Conference            New York, May 17 2012     #jenkinsconf



   MVN

   Maven

   !   Project Object Model (POM)

   !   Simplifies dependency resolution ("oops I forgot that .jar!")

   !   Makes the build process easy and uniform

   Artifactory (Maven Repository)

   !   Where do I put my built artifacts?

   !   Makes it easy for everyone to get the latest build!
Jenkins User Conference        New York, May 17 2012   #jenkinsconf



   Builds: Before Jenkins

   !   We have a single source repo + a place to
     store built artifacts, but…..
      –  Builds still take a long time

      –  Testing takes longer!

      –  Code coverage take even longer!

      –  Build environments are not standardized

      –  Mistakes are caught later, hard to debug
Jenkins User Conference          New York, May 17 2012   #jenkinsconf



   Builds: Enter Jenkins

   !   SCM commits automatically kick off a build
   !   Testing and code coverage is automated and is run on
     every commit.
   !   Broken builds immediately notify the team and the
     committer
   !   Tests run in a Clone of the Production Environment!
   !   Everyone can easily see what's happening!
   !   Developers can get back to coding instead of building
     and testing.
   !   Releases are quick and easy
Jenkins User Conference          New York, May 17 2012    #jenkinsconf



   Deployment: The problem.

   !   Configuration must be different per environment
   !   Choice between loss of control or loss of agility
      –  Often devs configure the container
      –  Either devs can edit deployables or they can't
   !   If they can... things are bad
      –  Code is deployed, edited and removed w/out Change
         Control
      –  Moving quickly… "I'll clean it up later!"
      –  Dev environments quickly diverge from Production
      –  Security is compromised
   !   If they can't... things are worse
      –  Change requests are "slow”
      –  Systems groups must do everything
Jenkins User Conference   New York, May 17 2012   #jenkinsconf



   Deployments: How do we fix them?

   !   Standardize the process!
   !   Promote SANE change control
   !   Normalize deployables/artifacts
   !   Single location for app configuration data
   !   Standardize the container
   !   Externalize what makes an environment
       unique and special
Jenkins User Conference               New York, May 17 2012   #jenkinsconf



   Yale Application Installer Plugin

   !   Standardize the process!
   !   Why?
      –  SSH creds + Delegation
      –  Manage keys outside
      –  Node name substitution
   !   How?
      –  Installer is co’d, scp’d
      –  install.properties on dest
      –  Pre-Install
      –  SSH exec installer
      –  Post-Install
Jenkins User Conference           New York, May 17 2012   #jenkinsconf


   Container Configurable Artifacts

   !   Artifacts were built with embedded configuration.
      –  ie. datasources, SSO, service endpoints, etc
      –  Artifacts are different per environment! WAT!?
      –  "Oops, I forgot to update that parameter!"
   !   Externalize configuration parameters!
      –  deployable XML using JNDIBindingServiceMgr
      –  Apps self configure with JNDI
   !   With Container Configurable artifacts…
      –  The SAME artifact migrates between environments
      –  XML configuration data (stored as build parameters in
         Jenkins) is all that differentiates environments
Jenkins User Conference                            New York, May 17 2012                 #jenkinsconf


   Container Configurable Artifacts
   <server>
      <mbean code="org.jboss.naming.JNDIBindingServiceMgr"
            name="org.jasig:service=CasConfig">

         <attribute name="BindingsConfig" serialDataType="jbxb">

            <jndi:bindings
               xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
               xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-
   service_1_0.xsd">

               <jndi:binding name="jasig/cas/config">
                  <java:properties xmlns:java="urn:jboss:java-properties"
                     xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
                     xs:schemaLocation="urn:jboss:java-properties resource:java-properties_1_0.xsd">

                     <!-- Properties -->
                     <java:property>
                        <java:key>loginUrl</java:key>
                        <java:value>https://secure.its.yale.edu/cas/login</java:value>
                     </java:property>
                     <java:property>
                        <java:key>casServerUrl</java:key>
                        <java:value>https://secure.its.yale.edu/cas</java:value>
                     </java:property>

                  </java:properties>
               </jndi:binding>

             </jndi:bindings>
         </attribute>
         <depends>jboss:service=Naming</depends>
      </mbean>
   </server>
Jenkins User Conference               New York, May 17 2012     #jenkinsconf


     Container Configurable Artifacts



String jndiBinding = “JNDI_PATH_HERE”;
Context ctx = null;
try {
   logger.info("Loading config from JNDI path: " + jndiBinding);
   ctx = new InitialContext();
   Map<String, String> config = (Map<String, String>) ctx.lookup(jndiBinding);
   doSomethingWithConfig(config);
} catch (Exception e) {
   throw new RuntimeException("Error getting configuration from JNDI. ", e);
} finally {
    try { ctx.close(); } catch (Exception e) { }
}
Jenkins User Conference    New York, May 17 2012   #jenkinsconf



   Yale Standard Java Container

   ! JBoss EAP (5.1 now)
   !   Minimal customization to externalize
       configuration into runtime
   !   JAAS provider for CAS SSO
   !   Packaged in RPM
   !   Configuration Management to install +
       manage what’s “special”
   !   Meets 100% of use cases (so far)
   !   Runtime configurable container is key!
Jenkins User Conference                 New York, May 17 2012   #jenkinsconf



   Yale Standard Java Container

   $JBOSS_HOME/deploy/jbossweb.sar/server.xml

   <!-- Connector for SSL 20100624 ECF -->
   <Connector protocol="HTTP/1.1" SSLEnabled="true"
        port="${jboss.bind.httpsport}" address="${jboss.bind.address}”
        secure="true" clientAuth="false" scheme="https”
        proxyName="${jboss.proxyname}" proxyPort="${jboss.proxyport}”
        SSLCertificateFile="${jboss.server.home.dir}/conf/server.crt"
        SSLCertificateKeyFile="${jboss.server.home.dir}/conf/server.pem”
        URIEncoding="UTF-8” SSLProtocol="TLS”>



    /etc/init.d/jboss_nodexx

    # JBoss variables
    export JBOSS_OPTS=“-Djboss.bind.httpport=${HTTPPORT} 
           -Djboss.bind.httpsport=${HTTPSPORT} ${ADDLJBOPTS}”

    ${JBOSS_HOME}/bin/run.sh ${JBOSS_OPTS} -c ${JBOSS_NODE} -g $
    {JBOSS_PARTITION} -b ${JBOSS_BIND} -u ${CLSTR_ADDR}
Jenkins User Conference   New York, May 17 2012   #jenkinsconf
Jenkins User Conference   New York, May 17 2012   #jenkinsconf
Jenkins User Conference   New York, May 17 2012   #jenkinsconf
Jenkins User Conference   New York, May 17 2012   #jenkinsconf
Jenkins User Conference   New York, May 17 2012   #jenkinsconf
Jenkins User Conference   New York, May 17 2012   #jenkinsconf
Jenkins User Conference               New York, May 17 2012     #jenkinsconf



   Deployments: The result.

   !   Consistency!
   !   Jenkins writes configuration XML: $human_error--
   !   Eliminate shells, and elevated privileges on servers
   !   Container is managed by infrastructure with the O/S
   !   Developers can deploy to DEV at will
   !   Empowers developers to GTD
   !   Puts gates at appropriate places
   !   Changes to the Jenkins jobs, containers + deploys to Test/Prod
       require change control
   !   Frees Systems folks to work on more interesting things
   !   Standard Container + Cloudy IaaS + Container Configurable
       artifacts = Vendor-lock-in-less PaaS!
Jenkins User Conference   New York, May 17 2012   #jenkinsconf



   Drupal Continuous Deployment

   !   Yale has a large shared Drupal
     infrastructure
   !   Shared = needs change control
   !   Migration process looks similar to Java
   !   Some end users want to edit themes!
   !   Jenkins to the rescue!
Jenkins User Conference   New York, May 17 2012   #jenkinsconf



   What’s New?

   !   Workflow integration through web services
   !   Build + Release of Apache Servicemix
       bundles and “features”
   !   Spawning and Destroying Servicemix child
       instances
   !   Deployment of Features and OSGI
       bundles to Apache Servicemix
   !   Deploying Drupal 7
      –  git + pull
Jenkins User Conference       New York, May 17 2012   #jenkinsconf



   Other Languages

   ! Php
      –  Code coverage and unit testing available
   !   Python
      –  CherryPy + Filelocker deployments
   !   Ruby
      –  Automated unit testing
      –  Automated code coverage
      –  Automated deployment coming soon
   ! .Net
      –  Build, unit test, archive creation
Jenkins User Conference     New York, May 17 2012   #jenkinsconf



   The Future

   !   RBAC + folders
      –  delegate responsibility to other systems groups
   !   Ruby deployments
   !   Enterprise Service Bus
   !   Centralized SSH mangagement
      –  the tools are better now
   !   Managing/Provisioning with cfg mgmt
   !   Testing and release of cfg mgmt “code”
   !   Cloud deployments
Jenkins User Conference   New York, May 17 2012   #jenkinsconf



   We’re hiring!




           http://www.yale.edu/jobs
Jenkins User Conference     New York, May 17 2012   #jenkinsconf



   Questions?




                   E Camden Fisher
              camden.fisher@yale.edu
                          @fishnix
Jenkins User Conference   New York, May 17 2012   #jenkinsconf



   Thank You To Our Sponsors
   Platinum
   Sponsor


   Gold
   Sponsors



   Silver
   Sponsors




   Bronze
   Sponsors

Contenu connexe

Similaire à JUC NYC 2012: Yale Build and Deployment with Jenkins

JUC NY - Advanced Continuous Deployment with Jenkins
JUC NY - Advanced Continuous Deployment with JenkinsJUC NY - Advanced Continuous Deployment with Jenkins
JUC NY - Advanced Continuous Deployment with JenkinsXebiaLabs
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Noah Sussman
 
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsDaniel Doubrovkine
 
Continuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&DContinuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&DAnton Weiss
 
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipelineKubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipelineKubeAcademy
 
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015Publicis Sapient Engineering
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Michal Ziarnik
 
Jenkins & Selenium
Jenkins & SeleniumJenkins & Selenium
Jenkins & Seleniumadamcarmi
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt projectEyal Edri
 
Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Vincent Latombe
 
NodeSummit - MEAN Stack
NodeSummit - MEAN StackNodeSummit - MEAN Stack
NodeSummit - MEAN StackValeri Karpov
 
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012Henri Gomez
 
Jenkins as a Service - Code all the way down
Jenkins as a Service - Code all the way downJenkins as a Service - Code all the way down
Jenkins as a Service - Code all the way downSteve Mactaggart
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosCloudBees
 
Testing Salesforce at Cloud Scale
Testing Salesforce at Cloud ScaleTesting Salesforce at Cloud Scale
Testing Salesforce at Cloud Scalegwestr
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to MavenSperasoft
 

Similaire à JUC NYC 2012: Yale Build and Deployment with Jenkins (20)

JUC NY - Advanced Continuous Deployment with Jenkins
JUC NY - Advanced Continuous Deployment with JenkinsJUC NY - Advanced Continuous Deployment with Jenkins
JUC NY - Advanced Continuous Deployment with Jenkins
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
 
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
 
Continuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&DContinuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&D
 
Jenkins 1
Jenkins 1Jenkins 1
Jenkins 1
 
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipelineKubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
 
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
 
Play framework
Play frameworkPlay framework
Play framework
 
Ant, Maven and Jenkins
Ant, Maven and JenkinsAnt, Maven and Jenkins
Ant, Maven and Jenkins
 
Jenkins & Selenium
Jenkins & SeleniumJenkins & Selenium
Jenkins & Selenium
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt project
 
Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014
 
NodeSummit - MEAN Stack
NodeSummit - MEAN StackNodeSummit - MEAN Stack
NodeSummit - MEAN Stack
 
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
 
Jenkins as a Service - Code all the way down
Jenkins as a Service - Code all the way downJenkins as a Service - Code all the way down
Jenkins as a Service - Code all the way down
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
 
Testing Salesforce at Cloud Scale
Testing Salesforce at Cloud ScaleTesting Salesforce at Cloud Scale
Testing Salesforce at Cloud Scale
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 

Dernier

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

JUC NYC 2012: Yale Build and Deployment with Jenkins

  • 1. Jenkins User Conference New York, May 17 2012 #jenkinsconf Yale Build and Deploy E Camden Fisher Yale University ITS
  • 2. Jenkins User Conference New York, May 17 2012 #jenkinsconf Who am I? E Camden Fisher Technical Lead Unix Infrastructure and Virtualization Information Technology Services Yale University camden.fisher@yale.edu @fishnix
  • 3. Jenkins User Conference New York, May 17 2012 #jenkinsconf Who Uses Jenkins @Yale?
  • 4.
  • 5. Jenkins User Conference New York, May 17 2012 #jenkinsconf Let’s Not Forget Continuous Integration! !   Maintain a Single Source Repository !   Automate the Build !   Make Your Build Self-Testing !   Everyone Commits to the Mainline Every Day !   Every Commit Should Build the Mainline on an Integration Machine !   Keep the Build Fast !   Test in a Clone of the Production Environment !   Make it Easy for Anyone to Get the Latest Executable !   Everyone can see what's happening !   Automate Deployment Avoid "Integration Hell!!”
  • 6. Jenkins User Conference New York, May 17 2012 #jenkinsconf Why we chose Jenkins? !   Easy! !   Extensible !   Scalable !   Flexible !   Open Source !   Supported!
  • 7. Jenkins User Conference New York, May 17 2012 #jenkinsconf Yale History Lesson Application lifecycle is a progression !   Source Code Management !   Maven and Artifactory !   Building and Testing with Jenkins !   Container Configurable artifacts !   Runtime Configurable Containers !   Managed deployments with Jenkins
  • 8. Jenkins User Conference New York, May 17 2012 #jenkinsconf SCM SCCS cp –pr RCS Subversion CVS VSS
  • 9. Jenkins User Conference New York, May 17 2012 #jenkinsconf MVN Maven !   Project Object Model (POM) !   Simplifies dependency resolution ("oops I forgot that .jar!") !   Makes the build process easy and uniform Artifactory (Maven Repository) !   Where do I put my built artifacts? !   Makes it easy for everyone to get the latest build!
  • 10. Jenkins User Conference New York, May 17 2012 #jenkinsconf Builds: Before Jenkins !   We have a single source repo + a place to store built artifacts, but….. –  Builds still take a long time –  Testing takes longer! –  Code coverage take even longer! –  Build environments are not standardized –  Mistakes are caught later, hard to debug
  • 11. Jenkins User Conference New York, May 17 2012 #jenkinsconf Builds: Enter Jenkins !   SCM commits automatically kick off a build !   Testing and code coverage is automated and is run on every commit. !   Broken builds immediately notify the team and the committer !   Tests run in a Clone of the Production Environment! !   Everyone can easily see what's happening! !   Developers can get back to coding instead of building and testing. !   Releases are quick and easy
  • 12.
  • 13. Jenkins User Conference New York, May 17 2012 #jenkinsconf Deployment: The problem. !   Configuration must be different per environment !   Choice between loss of control or loss of agility –  Often devs configure the container –  Either devs can edit deployables or they can't !   If they can... things are bad –  Code is deployed, edited and removed w/out Change Control –  Moving quickly… "I'll clean it up later!" –  Dev environments quickly diverge from Production –  Security is compromised !   If they can't... things are worse –  Change requests are "slow” –  Systems groups must do everything
  • 14. Jenkins User Conference New York, May 17 2012 #jenkinsconf Deployments: How do we fix them? !   Standardize the process! !   Promote SANE change control !   Normalize deployables/artifacts !   Single location for app configuration data !   Standardize the container !   Externalize what makes an environment unique and special
  • 15. Jenkins User Conference New York, May 17 2012 #jenkinsconf Yale Application Installer Plugin !   Standardize the process! !   Why? –  SSH creds + Delegation –  Manage keys outside –  Node name substitution !   How? –  Installer is co’d, scp’d –  install.properties on dest –  Pre-Install –  SSH exec installer –  Post-Install
  • 16. Jenkins User Conference New York, May 17 2012 #jenkinsconf Container Configurable Artifacts !   Artifacts were built with embedded configuration. –  ie. datasources, SSO, service endpoints, etc –  Artifacts are different per environment! WAT!? –  "Oops, I forgot to update that parameter!" !   Externalize configuration parameters! –  deployable XML using JNDIBindingServiceMgr –  Apps self configure with JNDI !   With Container Configurable artifacts… –  The SAME artifact migrates between environments –  XML configuration data (stored as build parameters in Jenkins) is all that differentiates environments
  • 17. Jenkins User Conference New York, May 17 2012 #jenkinsconf Container Configurable Artifacts <server> <mbean code="org.jboss.naming.JNDIBindingServiceMgr" name="org.jasig:service=CasConfig"> <attribute name="BindingsConfig" serialDataType="jbxb"> <jndi:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xmlns:jndi="urn:jboss:jndi-binding-service:1.0" xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding- service_1_0.xsd"> <jndi:binding name="jasig/cas/config"> <java:properties xmlns:java="urn:jboss:java-properties" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="urn:jboss:java-properties resource:java-properties_1_0.xsd"> <!-- Properties --> <java:property> <java:key>loginUrl</java:key> <java:value>https://secure.its.yale.edu/cas/login</java:value> </java:property> <java:property> <java:key>casServerUrl</java:key> <java:value>https://secure.its.yale.edu/cas</java:value> </java:property> </java:properties> </jndi:binding> </jndi:bindings> </attribute> <depends>jboss:service=Naming</depends> </mbean> </server>
  • 18. Jenkins User Conference New York, May 17 2012 #jenkinsconf Container Configurable Artifacts String jndiBinding = “JNDI_PATH_HERE”; Context ctx = null; try { logger.info("Loading config from JNDI path: " + jndiBinding);    ctx = new InitialContext();    Map<String, String> config = (Map<String, String>) ctx.lookup(jndiBinding);    doSomethingWithConfig(config); } catch (Exception e) {    throw new RuntimeException("Error getting configuration from JNDI. ", e); } finally {   try { ctx.close(); } catch (Exception e) { } }
  • 19. Jenkins User Conference New York, May 17 2012 #jenkinsconf Yale Standard Java Container ! JBoss EAP (5.1 now) !   Minimal customization to externalize configuration into runtime !   JAAS provider for CAS SSO !   Packaged in RPM !   Configuration Management to install + manage what’s “special” !   Meets 100% of use cases (so far) !   Runtime configurable container is key!
  • 20. Jenkins User Conference New York, May 17 2012 #jenkinsconf Yale Standard Java Container $JBOSS_HOME/deploy/jbossweb.sar/server.xml <!-- Connector for SSL 20100624 ECF --> <Connector protocol="HTTP/1.1" SSLEnabled="true" port="${jboss.bind.httpsport}" address="${jboss.bind.address}” secure="true" clientAuth="false" scheme="https” proxyName="${jboss.proxyname}" proxyPort="${jboss.proxyport}” SSLCertificateFile="${jboss.server.home.dir}/conf/server.crt" SSLCertificateKeyFile="${jboss.server.home.dir}/conf/server.pem” URIEncoding="UTF-8” SSLProtocol="TLS”> /etc/init.d/jboss_nodexx # JBoss variables export JBOSS_OPTS=“-Djboss.bind.httpport=${HTTPPORT} -Djboss.bind.httpsport=${HTTPSPORT} ${ADDLJBOPTS}” ${JBOSS_HOME}/bin/run.sh ${JBOSS_OPTS} -c ${JBOSS_NODE} -g $ {JBOSS_PARTITION} -b ${JBOSS_BIND} -u ${CLSTR_ADDR}
  • 21.
  • 22. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 23. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 24. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 25. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 26. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 27. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 28. Jenkins User Conference New York, May 17 2012 #jenkinsconf Deployments: The result. !   Consistency! !   Jenkins writes configuration XML: $human_error-- !   Eliminate shells, and elevated privileges on servers !   Container is managed by infrastructure with the O/S !   Developers can deploy to DEV at will !   Empowers developers to GTD !   Puts gates at appropriate places !   Changes to the Jenkins jobs, containers + deploys to Test/Prod require change control !   Frees Systems folks to work on more interesting things !   Standard Container + Cloudy IaaS + Container Configurable artifacts = Vendor-lock-in-less PaaS!
  • 29. Jenkins User Conference New York, May 17 2012 #jenkinsconf Drupal Continuous Deployment !   Yale has a large shared Drupal infrastructure !   Shared = needs change control !   Migration process looks similar to Java !   Some end users want to edit themes! !   Jenkins to the rescue!
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. Jenkins User Conference New York, May 17 2012 #jenkinsconf What’s New? !   Workflow integration through web services !   Build + Release of Apache Servicemix bundles and “features” !   Spawning and Destroying Servicemix child instances !   Deployment of Features and OSGI bundles to Apache Servicemix !   Deploying Drupal 7 –  git + pull
  • 36. Jenkins User Conference New York, May 17 2012 #jenkinsconf Other Languages ! Php –  Code coverage and unit testing available !   Python –  CherryPy + Filelocker deployments !   Ruby –  Automated unit testing –  Automated code coverage –  Automated deployment coming soon ! .Net –  Build, unit test, archive creation
  • 37. Jenkins User Conference New York, May 17 2012 #jenkinsconf The Future !   RBAC + folders –  delegate responsibility to other systems groups !   Ruby deployments !   Enterprise Service Bus !   Centralized SSH mangagement –  the tools are better now !   Managing/Provisioning with cfg mgmt !   Testing and release of cfg mgmt “code” !   Cloud deployments
  • 38. Jenkins User Conference New York, May 17 2012 #jenkinsconf We’re hiring! http://www.yale.edu/jobs
  • 39. Jenkins User Conference New York, May 17 2012 #jenkinsconf Questions? E Camden Fisher camden.fisher@yale.edu @fishnix
  • 40. Jenkins User Conference New York, May 17 2012 #jenkinsconf Thank You To Our Sponsors Platinum Sponsor Gold Sponsors Silver Sponsors Bronze Sponsors