SlideShare a Scribd company logo
1 of 35
Download to read offline
September 25, 2012
INTRODUCTION

About me and NorthPoint…
+ NorthPoint is a USA-based organization with offices in New
   York and Boston

+ Specializing in Open Source technologies for web applications

+ 130+ on-staff technologists focusing on Digital Strategy,
   Content Management and Enterprise Digital Architectures

+ Areas of focus in Media, Publishing, Finance, Healthcare,
   Education, and Not-for-Profit markets
WHAT WE WILL DISCUSS TODAY

 Running a successful OpenCms project leveraging Agile
   Maintain flexibility of requirements
   Deliver high-quality OpenCms implementations through use
     of TDD & Continuous Build

 Agile Development
   Overview
   How we run Agile with OpenCms

 Development of Deploy Scripts and Continuous Build
RUNNING A SUCCESSFUL
OPENCMS PROJECT
LEVERAGING AGILE
 Agile Development Process
   Why use Agile?
   Everyone has their own take on Agile – “Part of the Issues”
   Review of “True Agile” development
   Tying in Agile with Extreme Programming Techniques
   Agile approach for OpenCms projects
WHY CHANGE? WHY AGILE?

 Why should we change from traditional
  project management and development
  methods?
   The traditional method breaks down during the
    lifecycle of the project
     Change Request
     Changes in business
     The applications winds up being different from what was
      originally documented and envisioned
     Feedback from the customer is at the end of the process
TRADITIONAL SOFTWARE
 DEVELOPMENT


 Business Analysis and Systems Analysis and the Design
  has been signed off by the customer
 Development begins
   Change Requests begin
   More functionality changes and tweaks later and things are not
    looking good
   The schedule begins lagging
   Client’s first BETA and even more changes are requested
   Chances are, it's a mess of coding and comments without proper
    notes and testing and by now every little change here breaks
    something there
CURRENT APPROACH –
WHY IT FAILS?




 The Methodology didn’t   The Solution didn’t
 work                     work
TRADITIONAL FEATURE &
FUNCTION USAGE
WHAT CAN WE DO?

 New techniques are being used to break this familiar
  mold of software development

 They are known as Extreme and/or Agile development

 Developing OpenCms custom modules with Agile is the
  way to go
AGILE – A QUICK OVERVIEW

 Scrum – an iterative, incremental process

 All work is done in Sprints

 Sprints last for 30 days

 Every day the team gets together for a daily Scrum that
  lasts 15 minutes

 Incremental, potentially shippable product functionality
  every 30 days
HOW IT WORKS WITH OPENCMS

 Although following Agile to the letter sounds good, in
  practice we have made some slight variations

 Upfront Analysis and Definition of Scope

 Source Control, Continuous Build and Continuous
  Integration

 Full QA at the end

 Planning ahead for next phases
TEAMS AND CODE MANAGEMENT

 Creating Epics, Stories and Tasks

 Using the Stories to create test cases – the beginning of
  TDD

 Leveraging JUnit for custom code

 We use Jira to help run things

 Multiple teams need a good solution
   Continuous is the only way
TEAMS AND CODE MANAGEMENT

The tools we use

 Jira – Greenhopper, Crucible, Fisheye and Hudson along with custom
   Scripts

 Greenhopper – used for bringing things together
   Estimating, Velocity, Burn downs, etc.

 Crucible is a web-based tool that we use for in-line commenting, code
   reviews (allows for collaboration between author and reviewer)
    We feel this is a better approach than paired programming

 Fisheye for continuous build along with Hudson. Fisheye helps when
   trying to connect SVN commits through hooks in the code review process
   leveraging Crucible and Fisheye, in conjunction with automated quality
   test through sonar
ISSUES WITH AUTOMATION
AND OPENCMS
 The issues with integrated testing and automated builds with
   OpenCms is the way things work in OpenCms
    Much of the code is in context sensitive situations where part
      of the code is in Java, part in JSP’s and the rest in OpenCms
      core

 To create an automated process you need to be able to test
   across these different types of code

 What we created is a combined integration and test server
   where code is automatically compiled and deployed

 Once it’s deployed, tests can be triggered against the code
   through Selenium scripts for front-end testing
MAKE IT WORK

 Commitment to change

 Leveraging Test Driven Development (TDD)
   adding a test, then making it work

 Develop the backlog

 Creating the right team mix
WHAT’S NEEDED WITH OPENCMS

 Maintain a Code Repository
      SVN, Github

 Automate the Build Process
      Maven

 Make the build Self Testing
      Test Driven Development (JUnit for Java Classes)
      JSP’s require a different approach

 Automate Scheduling and Deployment
      Hudson
CONTINUOUS BUILD PROBLEMS
  Modules and source code are deployed to the VFS

  VFS is located in the Database

  Modules need to be packaged (zipped) into OpenCms module
   format in order to be imported

  What about importing non module code into the VFS system
   folder?

  What if we did not want to import an entire module but only
   parts of it?
OUR ANSWER

Create Scripts
 Create a script that packages source code into
  OpenCms-ready module

 Create a script which will prepare source code to be
  synchronized in OpenCms using the workplace
  synchronization tool
Sync System and
Make Modules Scripts
Two shell scripts which prepare
source code to be imported and
 synchronized with OpenCms
NEED TO SET
    ENVIRONMENT VARIABLES
+   export TOMCAT_HOME=/usr/local/tomcat
    + Location of app server where OpenCms is running

+   export DIR_SVN=/usr/local/src/svn/trunk/opencms
    +   Location of your subversion directory and src code

+   export OPENCMS_HOME=/usr/local/tomcat/webapps/opencms
    +   Location of the OpenCms deployed web site running inside of AppServer

+   export SYNC_DIR=/usr/local/src/opencms/sync
    +   Directory which will be used to sync content between the file system and OpenCms
        Virtual File System (VFS)

Environment variables need to be set in order to execute the shell
   scripts. Scripts will use the environment variables making it easier to
   move scripts in between different environments with little effort
*Environment variables can commonly be set in a users .bash_profile file
WHERE ARE SCRIPTS?
 Scripts live in the bin directory in your source code home
  directory (DIR_SVN)

 Module source code lives in the modules_src directory



Subversion Home Directory
MakeModule.sh

This script will take source code from
Subversion repository and zip up the code
and deploy it to the OpenCms server. User
will then be able to login to the admin and
upload the module via the module
manager.
MakeModule.sh
+ Executing the Script
  + Pass in the environment (dev)
    + Used if there are multiple instances (dev, test
      prod) of OpenCms running on one machine
  + Pass in the module name
    (edu.chop.migration)
MAKE Module.sh RESULTS

+ Module code copied from the modules_src directory
  and zipped up and ready for deployment
+ Module code copied and deployed to the OpenCms
  package directory

      /WEB-INF/packages/modules/
MakeModule.sh LAST STEP
Log into OpenCms admin and deploy the module
syncSystme.sh SECOND SCRIPT

 This script will sync source code to OpenCms by
  copying code to a sync directory (SYNC_DIR) and
  then using OpenCms to import the files from that
  directory using the OpenCms synchronization tool
syncSystem.sh
Step 1
    –    Configure synchronization settings in OpenCms
+   Synchronization setting will need to be configured to point to your file system
    sync directory. Also we need to specify which folders in the VFS we want to
    sync
syncSystem.sh
Step 2
   + Sync Down
      + Before we sync files from the file system into the VFS
        we first take files out of the VFS and put them on the
        file system
          + We want to tell the script which folders we want to
             sync
          + Gives the sync folder an up-to-date snapshot of
             the current source code in the VFS
          + Synchronizing will overwrite files and does not
             create new ones
syncSystem.sh
Step 2 cont...
   – Click on the sync button on the top right of screen
syncSystem.sh
Step 3 Run Sync Module Script
  Go to your Subversion home directory



  Run the script
synsSystem.sh RESULTS
Sync Folder updated
synsSystem.sh

Step 4 Sync Up
  - Running the synchronization again will push
    the files from the file system up to the VFS
syncSystem.sh

 Sync is complete!
RECAP OF AN OPENCMS PROJECT
USING AGILE AND CONTINUOUS
BUILD

 Agile process for better management of requirements
  and working with the end user

 Jira and third-party tools for:
    Managing Code
    Automated Testing
    Keeping Multiple Teams in Sync

 Custom Scripts for Continuous Build
    Supported by tools such as Hudson and possibly Gradle in
     the future
RICH COOLEY
    rich_cooley@northps.com

 TALK TO US. CHALLENGE US.
   CALL US at 212.819.1700
 VISIT US at www.northps.com
    FOLLOW US @northps

© NorthPoint and NorthPoint Solutions LLC

More Related Content

What's hot

Process Developer-I
Process Developer-IProcess Developer-I
Process Developer-I
Deep Singh
 

What's hot (20)

Devops : Automate Your Infrastructure with Puppet
Devops : Automate Your Infrastructure with PuppetDevops : Automate Your Infrastructure with Puppet
Devops : Automate Your Infrastructure with Puppet
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 
DevOps ci/cd with Microsoft vsts and azure
DevOps ci/cd with Microsoft vsts and azureDevOps ci/cd with Microsoft vsts and azure
DevOps ci/cd with Microsoft vsts and azure
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 
Docker - A Quick Introduction Guide
Docker - A Quick Introduction GuideDocker - A Quick Introduction Guide
Docker - A Quick Introduction Guide
 
Guide To Jenkins Management Continuous Integration And Useful Plugins Complet...
Guide To Jenkins Management Continuous Integration And Useful Plugins Complet...Guide To Jenkins Management Continuous Integration And Useful Plugins Complet...
Guide To Jenkins Management Continuous Integration And Useful Plugins Complet...
 
CI/CD
CI/CDCI/CD
CI/CD
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
Jenkins
JenkinsJenkins
Jenkins
 
DevOps
DevOpsDevOps
DevOps
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
 
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | EdurekaDevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
DevOps Interview Questions and Answers 2019 | DevOps Tutorial | Edureka
 
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
 
DevOps Delivery Pipeline
DevOps Delivery PipelineDevOps Delivery Pipeline
DevOps Delivery Pipeline
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
 
Implementing CI CD UiPath Using Jenkins Plugin
Implementing CI CD UiPath Using Jenkins PluginImplementing CI CD UiPath Using Jenkins Plugin
Implementing CI CD UiPath Using Jenkins Plugin
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
 
DevOps para Open Source com Azure DevOps
DevOps para Open Source com Azure DevOpsDevOps para Open Source com Azure DevOps
DevOps para Open Source com Azure DevOps
 
Process Developer-I
Process Developer-IProcess Developer-I
Process Developer-I
 

Viewers also liked

OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud servicesOpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
Alkacon Software GmbH & Co. KG
 

Viewers also liked (8)

OpenCms Days 2012 - Creating an event portal for young adults
OpenCms Days 2012 - Creating an event portal for young adultsOpenCms Days 2012 - Creating an event portal for young adults
OpenCms Days 2012 - Creating an event portal for young adults
 
OpenCms Days 2012 - Conference Opening Keynote: Introducing OpenCms 8.5
OpenCms Days 2012 - Conference Opening Keynote: Introducing OpenCms 8.5OpenCms Days 2012 - Conference Opening Keynote: Introducing OpenCms 8.5
OpenCms Days 2012 - Conference Opening Keynote: Introducing OpenCms 8.5
 
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud servicesOpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
OpenCms Days 2012 - The Dispatch - Running OpenCms 8 on Amazon cloud services
 
OpenCms Days 2012 - OpenCms 8 in enterprise environments - will it blend?
OpenCms Days 2012 - OpenCms 8 in enterprise environments - will it blend?OpenCms Days 2012 - OpenCms 8 in enterprise environments - will it blend?
OpenCms Days 2012 - OpenCms 8 in enterprise environments - will it blend?
 
OpenCmsDays 2012 - A simple OpenCms interface with incorporated workflow
OpenCmsDays 2012 - A simple OpenCms interface with incorporated workflowOpenCmsDays 2012 - A simple OpenCms interface with incorporated workflow
OpenCmsDays 2012 - A simple OpenCms interface with incorporated workflow
 
OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?
 
OpenCms Days 2012 - OpenCms on open clouds
OpenCms Days 2012 - OpenCms on open cloudsOpenCms Days 2012 - OpenCms on open clouds
OpenCms Days 2012 - OpenCms on open clouds
 
OpenCms Days 2012 - Keynote: Semantic Technologies for CMS
OpenCms Days 2012 - Keynote: Semantic Technologies for CMSOpenCms Days 2012 - Keynote: Semantic Technologies for CMS
OpenCms Days 2012 - Keynote: Semantic Technologies for CMS
 

Similar to OpenCms Days 2012 - How to manage an OpenCms project using Agile and continuous build

DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
Simplilearn
 
Introduction To Development And Operations
Introduction To Development And OperationsIntroduction To Development And Operations
Introduction To Development And Operations
teekhesawaal
 

Similar to OpenCms Days 2012 - How to manage an OpenCms project using Agile and continuous build (20)

Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
 
Introduction To Development And Operations
Introduction To Development And OperationsIntroduction To Development And Operations
Introduction To Development And Operations
 
DevOps & DevEx
DevOps & DevExDevOps & DevEx
DevOps & DevEx
 
Deploying systems using AWS DevOps tools
Deploying systems using AWS DevOps toolsDeploying systems using AWS DevOps tools
Deploying systems using AWS DevOps tools
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
DevOps for dummies study sharing - part II
DevOps for dummies study sharing - part IIDevOps for dummies study sharing - part II
DevOps for dummies study sharing - part II
 
Dev ops
Dev opsDev ops
Dev ops
 
Session on evaluation of DevSecOps
Session on evaluation of DevSecOpsSession on evaluation of DevSecOps
Session on evaluation of DevSecOps
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
 
DevOps Lifecycle: Definition, Phases and Key Components.pdf
DevOps Lifecycle: Definition, Phases and Key Components.pdfDevOps Lifecycle: Definition, Phases and Key Components.pdf
DevOps Lifecycle: Definition, Phases and Key Components.pdf
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivity
 
Dev ops
Dev opsDev ops
Dev ops
 
DevOps Presentation.pptx
DevOps Presentation.pptxDevOps Presentation.pptx
DevOps Presentation.pptx
 

More from Alkacon Software GmbH & Co. KG

More from Alkacon Software GmbH & Co. KG (20)

OpenCms Days 2016: Multilingual websites with OpenCms
OpenCms Days 2016:   Multilingual websites with OpenCmsOpenCms Days 2016:   Multilingual websites with OpenCms
OpenCms Days 2016: Multilingual websites with OpenCms
 
OpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCmsOpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCms
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
 
OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository
 
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
 
OpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spotOpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spot
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
 
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace OpenCms Days 2015  Creating Apps for the OpenCms 10 workplace
OpenCms Days 2015 Creating Apps for the OpenCms 10 workplace
 
OpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
 
OpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and JenkinsOpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and Jenkins
 
OpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containersOpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containers
 
OpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCmsOpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCms
 
OpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr SearchingOpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr Searching
 
OpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernmentOpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernment
 
OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta
 
OpenCms Days 2015 How do you develop for OpenCms?
OpenCms Days 2015 How do you develop for OpenCms?OpenCms Days 2015 How do you develop for OpenCms?
OpenCms Days 2015 How do you develop for OpenCms?
 
OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
 
OpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portalsOpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portals
 
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and GruntOpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
 
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TSOpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

OpenCms Days 2012 - How to manage an OpenCms project using Agile and continuous build

  • 2. INTRODUCTION About me and NorthPoint… + NorthPoint is a USA-based organization with offices in New York and Boston + Specializing in Open Source technologies for web applications + 130+ on-staff technologists focusing on Digital Strategy, Content Management and Enterprise Digital Architectures + Areas of focus in Media, Publishing, Finance, Healthcare, Education, and Not-for-Profit markets
  • 3. WHAT WE WILL DISCUSS TODAY  Running a successful OpenCms project leveraging Agile  Maintain flexibility of requirements  Deliver high-quality OpenCms implementations through use of TDD & Continuous Build  Agile Development  Overview  How we run Agile with OpenCms  Development of Deploy Scripts and Continuous Build
  • 4. RUNNING A SUCCESSFUL OPENCMS PROJECT LEVERAGING AGILE  Agile Development Process  Why use Agile?  Everyone has their own take on Agile – “Part of the Issues”  Review of “True Agile” development  Tying in Agile with Extreme Programming Techniques  Agile approach for OpenCms projects
  • 5. WHY CHANGE? WHY AGILE?  Why should we change from traditional project management and development methods?  The traditional method breaks down during the lifecycle of the project  Change Request  Changes in business  The applications winds up being different from what was originally documented and envisioned  Feedback from the customer is at the end of the process
  • 6. TRADITIONAL SOFTWARE DEVELOPMENT  Business Analysis and Systems Analysis and the Design has been signed off by the customer  Development begins  Change Requests begin  More functionality changes and tweaks later and things are not looking good  The schedule begins lagging  Client’s first BETA and even more changes are requested  Chances are, it's a mess of coding and comments without proper notes and testing and by now every little change here breaks something there
  • 7. CURRENT APPROACH – WHY IT FAILS? The Methodology didn’t The Solution didn’t work work
  • 9. WHAT CAN WE DO?  New techniques are being used to break this familiar mold of software development  They are known as Extreme and/or Agile development  Developing OpenCms custom modules with Agile is the way to go
  • 10. AGILE – A QUICK OVERVIEW  Scrum – an iterative, incremental process  All work is done in Sprints  Sprints last for 30 days  Every day the team gets together for a daily Scrum that lasts 15 minutes  Incremental, potentially shippable product functionality every 30 days
  • 11. HOW IT WORKS WITH OPENCMS  Although following Agile to the letter sounds good, in practice we have made some slight variations  Upfront Analysis and Definition of Scope  Source Control, Continuous Build and Continuous Integration  Full QA at the end  Planning ahead for next phases
  • 12. TEAMS AND CODE MANAGEMENT  Creating Epics, Stories and Tasks  Using the Stories to create test cases – the beginning of TDD  Leveraging JUnit for custom code  We use Jira to help run things  Multiple teams need a good solution  Continuous is the only way
  • 13. TEAMS AND CODE MANAGEMENT The tools we use  Jira – Greenhopper, Crucible, Fisheye and Hudson along with custom Scripts  Greenhopper – used for bringing things together  Estimating, Velocity, Burn downs, etc.  Crucible is a web-based tool that we use for in-line commenting, code reviews (allows for collaboration between author and reviewer)  We feel this is a better approach than paired programming  Fisheye for continuous build along with Hudson. Fisheye helps when trying to connect SVN commits through hooks in the code review process leveraging Crucible and Fisheye, in conjunction with automated quality test through sonar
  • 14. ISSUES WITH AUTOMATION AND OPENCMS  The issues with integrated testing and automated builds with OpenCms is the way things work in OpenCms  Much of the code is in context sensitive situations where part of the code is in Java, part in JSP’s and the rest in OpenCms core  To create an automated process you need to be able to test across these different types of code  What we created is a combined integration and test server where code is automatically compiled and deployed  Once it’s deployed, tests can be triggered against the code through Selenium scripts for front-end testing
  • 15. MAKE IT WORK  Commitment to change  Leveraging Test Driven Development (TDD)  adding a test, then making it work  Develop the backlog  Creating the right team mix
  • 16. WHAT’S NEEDED WITH OPENCMS  Maintain a Code Repository  SVN, Github  Automate the Build Process  Maven  Make the build Self Testing  Test Driven Development (JUnit for Java Classes)  JSP’s require a different approach  Automate Scheduling and Deployment  Hudson
  • 17. CONTINUOUS BUILD PROBLEMS  Modules and source code are deployed to the VFS  VFS is located in the Database  Modules need to be packaged (zipped) into OpenCms module format in order to be imported  What about importing non module code into the VFS system folder?  What if we did not want to import an entire module but only parts of it?
  • 18. OUR ANSWER Create Scripts  Create a script that packages source code into OpenCms-ready module  Create a script which will prepare source code to be synchronized in OpenCms using the workplace synchronization tool
  • 19. Sync System and Make Modules Scripts Two shell scripts which prepare source code to be imported and synchronized with OpenCms
  • 20. NEED TO SET ENVIRONMENT VARIABLES + export TOMCAT_HOME=/usr/local/tomcat + Location of app server where OpenCms is running + export DIR_SVN=/usr/local/src/svn/trunk/opencms + Location of your subversion directory and src code + export OPENCMS_HOME=/usr/local/tomcat/webapps/opencms + Location of the OpenCms deployed web site running inside of AppServer + export SYNC_DIR=/usr/local/src/opencms/sync + Directory which will be used to sync content between the file system and OpenCms Virtual File System (VFS) Environment variables need to be set in order to execute the shell scripts. Scripts will use the environment variables making it easier to move scripts in between different environments with little effort *Environment variables can commonly be set in a users .bash_profile file
  • 21. WHERE ARE SCRIPTS?  Scripts live in the bin directory in your source code home directory (DIR_SVN)  Module source code lives in the modules_src directory Subversion Home Directory
  • 22. MakeModule.sh This script will take source code from Subversion repository and zip up the code and deploy it to the OpenCms server. User will then be able to login to the admin and upload the module via the module manager.
  • 23. MakeModule.sh + Executing the Script + Pass in the environment (dev) + Used if there are multiple instances (dev, test prod) of OpenCms running on one machine + Pass in the module name (edu.chop.migration)
  • 24. MAKE Module.sh RESULTS + Module code copied from the modules_src directory and zipped up and ready for deployment + Module code copied and deployed to the OpenCms package directory /WEB-INF/packages/modules/
  • 25. MakeModule.sh LAST STEP Log into OpenCms admin and deploy the module
  • 26. syncSystme.sh SECOND SCRIPT  This script will sync source code to OpenCms by copying code to a sync directory (SYNC_DIR) and then using OpenCms to import the files from that directory using the OpenCms synchronization tool
  • 27. syncSystem.sh Step 1 – Configure synchronization settings in OpenCms + Synchronization setting will need to be configured to point to your file system sync directory. Also we need to specify which folders in the VFS we want to sync
  • 28. syncSystem.sh Step 2 + Sync Down + Before we sync files from the file system into the VFS we first take files out of the VFS and put them on the file system + We want to tell the script which folders we want to sync + Gives the sync folder an up-to-date snapshot of the current source code in the VFS + Synchronizing will overwrite files and does not create new ones
  • 29. syncSystem.sh Step 2 cont... – Click on the sync button on the top right of screen
  • 30. syncSystem.sh Step 3 Run Sync Module Script Go to your Subversion home directory Run the script
  • 32. synsSystem.sh Step 4 Sync Up - Running the synchronization again will push the files from the file system up to the VFS
  • 34. RECAP OF AN OPENCMS PROJECT USING AGILE AND CONTINUOUS BUILD  Agile process for better management of requirements and working with the end user  Jira and third-party tools for:  Managing Code  Automated Testing  Keeping Multiple Teams in Sync  Custom Scripts for Continuous Build  Supported by tools such as Hudson and possibly Gradle in the future
  • 35. RICH COOLEY rich_cooley@northps.com TALK TO US. CHALLENGE US. CALL US at 212.819.1700 VISIT US at www.northps.com FOLLOW US @northps © NorthPoint and NorthPoint Solutions LLC