SlideShare a Scribd company logo
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?
JUC NYC 2012: Yale Build and Deployment with Jenkins
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
JUC NYC 2012: Yale Build and Deployment with Jenkins
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}
JUC NYC 2012: Yale Build and Deployment with Jenkins
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!
JUC NYC 2012: Yale Build and Deployment with Jenkins
JUC NYC 2012: Yale Build and Deployment with Jenkins
JUC NYC 2012: Yale Build and Deployment with Jenkins
JUC NYC 2012: Yale Build and Deployment with Jenkins
JUC NYC 2012: Yale Build and Deployment with Jenkins
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

More Related Content

PPTX
Best Practices for Mission-Critical Jenkins
PDF
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
PDF
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
PDF
Nio
PDF
Buildr In Action @devoxx france 2012
PPT
Containers 101
PPTX
Japan NCAP Update
PDF
Guia acoso escolar para docentes
Best Practices for Mission-Critical Jenkins
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Nio
Buildr In Action @devoxx france 2012
Containers 101
Japan NCAP Update
Guia acoso escolar para docentes

Similar to JUC NYC 2012: Yale Build and Deployment with Jenkins (20)

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

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Cloud computing and distributed systems.
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
Teaching material agriculture food technology
PPTX
Spectroscopy.pptx food analysis technology
Agricultural_Statistics_at_a_Glance_2022_0.pdf
NewMind AI Weekly Chronicles - August'25 Week I
MIND Revenue Release Quarter 2 2025 Press Release
Cloud computing and distributed systems.
MYSQL Presentation for SQL database connectivity
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Empathic Computing: Creating Shared Understanding
Network Security Unit 5.pdf for BCA BBA.
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Encapsulation_ Review paper, used for researhc scholars
20250228 LYD VKU AI Blended-Learning.pptx
sap open course for s4hana steps from ECC to s4
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Per capita expenditure prediction using model stacking based on satellite ima...
Dropbox Q2 2025 Financial Results & Investor Presentation
Teaching material agriculture food technology
Spectroscopy.pptx food analysis technology
Ad

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?
  • 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
  • 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}
  • 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!
  • 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