SlideShare a Scribd company logo
1 of 27
Download to read offline
Keeping Your Sanity

Rapid Development & Deployment Tools"
                   October 26th, 2011"
         Gary Cox – Blue Fish Development Group"
Overview"
Who is the Target Audience?
  •  New Alfresco developers trying to get a better understanding of
     potential approaches to developing and deploying custom code"
  •  Developers that currently have some components of a system in
     place, but need a more complete solution"
  •  Developers looking to see “What else is out there?”"
  •  Some Java platform experience is assumed"

What will We Cover Today?
  •  Discussion of the overall approach and the open source tools that
     we use"
  •  Solutions to tricky problems using these standard tools"
  •  Brief demonstration of using these tools against Alfresco
     Community 4.0.a"
  •  Where to go to find more information"
Goals"
Quick Overview of Alfresco Deployment Concepts
  •  Review Alfresco deployment approaches"
  •  Developing in a team environment"

Understand the Challenges
  •    Choosing a deployment model"
  •    Developing and deploying in a team environment"
  •    Ramping up new developers"
  •    Quickly standing up new projects"

Tools and Processes to Make this Process Easier
  •  Use Open Source tools"
  •  More than just tools: Provide a process"
  •  Process should be adaptable to different tools"
Who is Blue Fish Development Group?"

Alfresco Platinum Partner"
Focused on ECM for 12 years
  •  Document Management and
     Collaboration"
  •  Custom Application
     Development"
  •  Content Migrations"
Client Base
  •  Global 2000"
  •  Growing Mid-Market Companies"

Key Offerings
  •  Alfresco Quick Starts"
  •  Turnkey ECM Solutions"
  •  Alfresco Projects in "Small Bites""
Guiding Principles"

What are the Guiding Principles for Our Development
Tools and Processes?"
  •  Improve repeatability"
  •  Controlled releases"
  •  Ability to quickly ramp up Developers"
  •  Ability to quickly stand up new Development environments"
 •  Modularity"
  •  Keep customizations separate from Alfresco"
  •  Keep customizations in project-specific paths to support
     multiple modules"
 •  Efficiency "
  •  Ability to develop against a variety of Alfresco versions"
  •  Reduce cycle time"
  •  Ability to revert to a known/clean state"
Review Potential Deployment Approaches"

Many Potential Approaches to
Deploying Custom code
  •  Overwrite existing files under
     the WEB-INF directory"
  •  Deploy into /extension or /
     web-extension paths of the
     application"
  •  Deploy code into the /shared
     path"
  •  Package customizations into
     AMP files and deploy into /
     module path"
Points of Pain for These Approaches 1"

Overwrite existing files under the WEB-INF directory
 • Disadvantages"
   • Nightmare for maintenance"
   • Can make every upgrade a difficult process"
   • No central location for customizations"
Points of Pain for These Approaches 2"
Deploy batch of customized files into the /extension or /web-
extension paths of the application
 • Advantages"
   • Overriding instead of replacing out of the box functionality, which is a good
     thing"
 • Disadvantages"
   • How to handle packaging and versioning of content?"
   • Are you all on the same version of the files?"
   • What version is out there, anyway?"
   • How to integrate multiple packages?"
Points of Pain for These Approaches 3"

Deploy code into the /shared path
 • Advantages"
   • Doesnʼt get overwritten by new deployments of WAR files"
   • Good for environment-specific files (like properties files)"

 • Disadvantages"
   • This is typically where server specific properties files reside. May require
     tweaking the set of deployed files"
   • Potential versioning issues"
   • Integrating multiple projects"
Points of Pain for These Approaches 4"

Package customizations into AMP files
 • Advantages"
   • Quick to deploy a set of customizations"
   • Can group customizations into multiple AMPs if needed"
   • Provides a way to install a known version of an AMP (and an easy way to
     check the installed version)"
   • Easier to avoid problems when integrating add-ons from multiple sources"

 • Disadvantages"
   • Packaging into an amp can take longer"
   • Current deployment tool does not support uninstalling an AMP"
   • Typically still need a way to deploy environment-specific properties files"
Team Development Headaches"

What are the Considerations when Working as a Team?
  •  Coordinated modification of the source"
    •    Source control"
    •    Continuous Integration"
  •  Bringing new developers onto a project"
  •  Modularization"
    •    Developers can focus on their areas of expertise"
    •    Can work on subset of project that you are focused on"
Blue Fishʼs Approach to Keeping Things Sane"

Developed a Set of Tools and Procedures to Meet our Needs
  •      Open source tools"
  •      Scripts to bootstrap development environments"
  •      Scripts to speed up development and deployment tasks"
  •      Integration with an Integrated Development Environment to let
         developers get to work quickly.""
        •     Java developers may not even require extensive Alfresco knowledge to
              work on specific tasks ""
  •  Development environments split Alfresco Repository and Share"
What Tools Do We Use?
   •         Subversion"
   •         Maven"
   •         Nexus"
   •         Ant"
   •         Eclipse"
   •         Bamboo for CI (not Open Source, but Hudson is another option)"
Process Overview 1"
Process Overview 2 (The Bigger Picture)"
Overview of Deployment Stack: Build"
Maven"
  •  Maven Benefits"
    •    Manage transitive
         dependencies"
    •    Easy to modularize build"
    •    Standardization across
         projects and build types"
    •    Share build elements (POM
         inheritance)"
    •    Single point of project
         configuration"
    •    Declarative: What needs to
         be done? (versus ʻHow?ʼ)"
  •  Project Object Model
     (POM) files define projects"
    •    Project dependencies"
    •    Project Modules"
    •    Required Plugins"
Overview of Deployment Stack: Artifact Repo"
Nexus"
  •  Used to maintain our
     corporate Maven
     repository"
    •    Alfresco JAR files can be
         added to the repository as
         Artifacts"
  •  Can maintain local
     repositories and point to
     public repositories on the
     Internet"
  •  Developers donʼt need to
     know where artifacts come
     from… ʻone stop shopʼ"
  •  At Blue Fish we maintain a
     repository for 3rd Party
     libraries and our own
     artifacts"
Overview of Deployment Stack: IDE"
Eclipse
•  We typically use Eclipse, but
   other IDEs can be used"
  •    NetBeans"
  •    IntelliJ IDEA"
•  Maven can generate Eclipse
   projects"
  •    mvn eclipse:eclipse"
  •    Import project"
  •    Point to Maven repository by
       setting M2_REPO path"
  •    The Maven POM mappings
       between source directories
       and target paths"
•  Rapid search across project
   source and Alfresco source/
   config files"
Overview of Deployment Stack: Deployment"
Ant
•  Ant scripts are used for deploying AMP files into Development
   Environment"
  •    Pulls out of the box Alfresco WAR files from Maven Repo"
  •    Deploys AMP file(s) into the WAR"
  •    Removes old folder structure"
  •    Can ʻfast-deployʼ into Share"
•  Ant scripts can be configured to install multiple AMPs as
   dependencies as required (for example the Alfresco FDK AMP)"
•  Everything comes from the Maven Repo (Maven Ant Tasks)"
Overview of Deployment Stack: Source Control"



Subversion
•  Broad platform and tools
   support"
•  For Continuous Integration
   (CI), builds are performed on
   code check-in"
•  We use Atlassian Bamboo
   for CI, but other tools such
   as Hudson could be used"
Process Walkthrough"

You Have a New Project (or Projects!) or a New Team
Member… How do You Get Started?
  •  Need to stand up a development environment"
  •  Need the ability to get additional developers ramped up on the
     project quickly (may have variety of skill sets)"
  •  Need to deal with task switching between multiple projects"
  •  Need self-contained stack to switch from project to project rapidly"
Demonstration of a Working Environment
   •  Developers can get started quickly"
   •  Can even hand this off to run ʻofflineʼ once Maven dependencies
      have been downloaded"
   •  The tools handle packaging the AMP and setting the targets for
      folders."
   •  Developers just need to know to write their code in a few source
      folders"
   •  Developers donʼt need to know about other modules or
      dependencies"
Standing Up a New Developer"

Step 1
  •  Get a copy of a project folder"
    •    Contains an Alfresco
         installation (Community, in this
         case)"
    •    All required tools are in the
         “tools” folder"
    •    Downloaded Maven
         dependencies are in “maven-
         repo”"
Standing Up a New Developer"

Step 2
  •  Perform source code update
     to get latest code"
Local Build/Deployment Cycle"

Step 1
  •  Validate that it will
     build:"
    •     ʻmvn clean installʼ"

Step 2
  •  Create Eclipse project:"
    •     ʻmvn eclipse:eclipseʼ"


Step 3
   •  Launch Eclipse"
     •     Import Existing Project into Workspace (trunk directory) to import Alfresco
           and Share"
     •     If using Maven Eclipse plug-in, remember to set ʻM2_REPOʼ build path
           variable and point to ʻmaven-repoʼ (not required if using Eclipse M2Eclipse
           plug-in)"
Local Build/Deployment Cycle"

Step 4
  •  Save custom code in Eclipse"
  •  Typically will use existing /src paths"
Step 5
  •  Test building and deploying into local Alfresco environment:"
    •          ʻmvn clean installʼ"
    •          ʻant clean-install-and-deployʼ"
              •     We have a variety of convenience deployment targets"
              •     ʻant –projecthelpʼ provides a list of deployment targets"

Step 6
   •  Start local Alfresco Repository and Share and review changes"
   •  We start the servers with BAT files"
         •         Separate Tomcat instances for Alfresco Repository and Alfresco Share"
         •         BAT file starts the database"
Challenges that We Encountered"

Environmental
  •  Had issues with OpenOffice if it was nested too deeply"

Maven Challenges
•  Alfresco Module Management Tool doesnʼt understand non-numeric
   version numbers (e.g. 1.0.0-SNAPSHOT)"
  •    We use a plug-in to produce a version number to strip ʻSNAPSHOTʼ"
•  Eclipse integration: Neither the Maven Eclipse plug-in and the Eclipse
   M2Eclipse plug-in understand AMP packaging"
  •    Declare ʻJARʼ packaging and explicitly package and include as AMP"
ANT
   •  Maven Ant Tasks"
       •    Donʼt understand redefining the Central Repository to point at corporate
            repository."
       •     Have to explicitly declare a Remote Repository"
Interested in the Presentation Materials?"

 •  We are hoping to be able to provide some portion of the examples and the
    slides on our FTP site"
 •  We have a sign in sheet if youʼre interested in getting access to the materials
    when they are available."
 •  Check for updates here:"
   •    http://bit.ly/toeD9Y"
Resources"
Where to find the tools discussed in this presentation:
 •  Maven"
   •    http://maven.apache.org/"
 •  Maven Ant Tasks"
   •    http://maven.apache.org/ant-tasks/index.html"
 •  Nexus"
   •    http://nexus.sonatype.org/"
 •  Hudson"
   •    http://hudson-ci.org/"
 •  Eclipse"
   •    http://www.eclipse.org/"
 •  Ant"
   •    http://ant.apache.org/"
 •  Subversion"
   •    http://subversion.apache.org/"
 •  Blue Fish Development Group"
   •    http://www.bluefishgroup.com/"

More Related Content

What's hot

Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3Ahmed Misbah
 
Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016Oleg Nenashev
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Ryan Cuprak
 
Overview of Chef - Fundamentals Webinar Series Part 1
Overview of Chef - Fundamentals Webinar Series Part 1Overview of Chef - Fundamentals Webinar Series Part 1
Overview of Chef - Fundamentals Webinar Series Part 1Chef
 
Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming Virtual JBoss User Group
 
Enterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryEnterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryChris Riley ☁
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Puppet
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 
Codecoon - A technical Case Study
Codecoon - A technical Case StudyCodecoon - A technical Case Study
Codecoon - A technical Case StudyMichael Lihs
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Software, Inc.
 
Jelastic - DevOps for Java with Docker Containers - Madrid 2015
Jelastic - DevOps for Java with Docker Containers - Madrid 2015Jelastic - DevOps for Java with Docker Containers - Madrid 2015
Jelastic - DevOps for Java with Docker Containers - Madrid 2015Jelastic Multi-Cloud PaaS
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefNathen Harvey
 
Docker and Jenkins Pipeline
Docker and Jenkins PipelineDocker and Jenkins Pipeline
Docker and Jenkins PipelineMark Waite
 
12-factor-jruby
12-factor-jruby12-factor-jruby
12-factor-jrubyJoe Kutner
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Pavel Chunyayev
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Symphony Software Foundation
 
Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for NetworkDamien Garros
 

What's hot (20)

Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3
 
Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016Configuration as Code in Jenkins. What's new? Nov 2016
Configuration as Code in Jenkins. What's new? Nov 2016
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine
 
Overview of Chef - Fundamentals Webinar Series Part 1
Overview of Chef - Fundamentals Webinar Series Part 1Overview of Chef - Fundamentals Webinar Series Part 1
Overview of Chef - Fundamentals Webinar Series Part 1
 
Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming
 
Enterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private RegistryEnterprise Docker Requires a Private Registry
Enterprise Docker Requires a Private Registry
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Codecoon - A technical Case Study
Codecoon - A technical Case StudyCodecoon - A technical Case Study
Codecoon - A technical Case Study
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
 
Jelastic - DevOps for Java with Docker Containers - Madrid 2015
Jelastic - DevOps for Java with Docker Containers - Madrid 2015Jelastic - DevOps for Java with Docker Containers - Madrid 2015
Jelastic - DevOps for Java with Docker Containers - Madrid 2015
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Docker and Jenkins Pipeline
Docker and Jenkins PipelineDocker and Jenkins Pipeline
Docker and Jenkins Pipeline
 
12-factor-jruby
12-factor-jruby12-factor-jruby
12-factor-jruby
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
 
The unintended benefits of Chef
The unintended benefits of ChefThe unintended benefits of Chef
The unintended benefits of Chef
 
Learning chef
Learning chefLearning chef
Learning chef
 
Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for Network
 

Viewers also liked

Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Software
 
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Software
 
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Software
 
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Software
 
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Software
 
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Software
 
Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Software
 

Viewers also liked (8)

Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
 
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
 
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
 
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
 
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of Alfresco
 
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management application
 
Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossier
 
Culture
CultureCulture
Culture
 

Similar to BP-10 Keeping Your Sanity – Rapid Development & Deployment Tools

Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentationArnaud Héritier
 
Lorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenLorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenArnaud Héritier
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Martin Bergljung
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svnAnkur Goyal
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topicGourav Varma
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesAlfresco Software
 
Introduction tomaven
Introduction tomavenIntroduction tomaven
Introduction tomavenManav Prasad
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesAlfresco Software
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulMert Çalışkan
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUlrich Krause
 
How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.Fazreil Amreen Abdul Jalil
 
software technology benchmarking
software  technology benchmarkingsoftware  technology benchmarking
software technology benchmarkingMallikarjuna G D
 
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container ServicePlay Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container ServiceJosh Padnick
 
Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)yalini97
 
(Re)-Introduction to Maven
(Re)-Introduction to Maven(Re)-Introduction to Maven
(Re)-Introduction to MavenEric Wyles
 
Introduction in Apache Maven2
Introduction in Apache Maven2Introduction in Apache Maven2
Introduction in Apache Maven2Heiko Scherrer
 

Similar to BP-10 Keeping Your Sanity – Rapid Development & Deployment Tools (20)

Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentation
 
Lorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenLorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - Maven
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topic
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
 
Introduction tomaven
Introduction tomavenIntroduction tomaven
Introduction tomaven
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best Practices
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
Mavennotes.pdf
Mavennotes.pdfMavennotes.pdf
Mavennotes.pdf
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Devops
DevopsDevops
Devops
 
ONAP on Vagrant
ONAP on VagrantONAP on Vagrant
ONAP on Vagrant
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.How maven makes your development group look like a bunch of professionals.
How maven makes your development group look like a bunch of professionals.
 
software technology benchmarking
software  technology benchmarkingsoftware  technology benchmarking
software technology benchmarking
 
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container ServicePlay Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
 
Top 10 dev ops tools (1)
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
 
(Re)-Introduction to Maven
(Re)-Introduction to Maven(Re)-Introduction to Maven
(Re)-Introduction to Maven
 
Introduction in Apache Maven2
Introduction in Apache Maven2Introduction in Apache Maven2
Introduction in Apache Maven2
 

More from Alfresco Software

Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Software
 
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Software
 
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Software
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Software
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Software
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Software
 
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Software
 
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Software
 
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Software
 
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Software
 
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Software
 
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Software
 
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Software
 
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Software
 
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...Alfresco Software
 
Alfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Software
 
Alfresco Day Milano 2016 - Tribunale di Cremona
Alfresco Day Milano 2016 - Tribunale di CremonaAlfresco Day Milano 2016 - Tribunale di Cremona
Alfresco Day Milano 2016 - Tribunale di CremonaAlfresco Software
 
Alfresco Day Milano 2016 - Alfresco Product Update
Alfresco Day Milano 2016 - Alfresco Product UpdateAlfresco Day Milano 2016 - Alfresco Product Update
Alfresco Day Milano 2016 - Alfresco Product UpdateAlfresco Software
 
Alfresco Day Milano 2016 - Pernexas
Alfresco Day Milano 2016 - PernexasAlfresco Day Milano 2016 - Pernexas
Alfresco Day Milano 2016 - PernexasAlfresco Software
 
Alfresco Day Milano 2016 - Alfresco Activiti
Alfresco Day Milano 2016 - Alfresco ActivitiAlfresco Day Milano 2016 - Alfresco Activiti
Alfresco Day Milano 2016 - Alfresco ActivitiAlfresco Software
 

More from Alfresco Software (20)

Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
 
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
 
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest API
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
 
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
 
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
 
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
 
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
 
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
 
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
 
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
 
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
 
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
 
Alfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo Data
 
Alfresco Day Milano 2016 - Tribunale di Cremona
Alfresco Day Milano 2016 - Tribunale di CremonaAlfresco Day Milano 2016 - Tribunale di Cremona
Alfresco Day Milano 2016 - Tribunale di Cremona
 
Alfresco Day Milano 2016 - Alfresco Product Update
Alfresco Day Milano 2016 - Alfresco Product UpdateAlfresco Day Milano 2016 - Alfresco Product Update
Alfresco Day Milano 2016 - Alfresco Product Update
 
Alfresco Day Milano 2016 - Pernexas
Alfresco Day Milano 2016 - PernexasAlfresco Day Milano 2016 - Pernexas
Alfresco Day Milano 2016 - Pernexas
 
Alfresco Day Milano 2016 - Alfresco Activiti
Alfresco Day Milano 2016 - Alfresco ActivitiAlfresco Day Milano 2016 - Alfresco Activiti
Alfresco Day Milano 2016 - Alfresco Activiti
 

Recently uploaded

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
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 businesspanagenda
 
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, ...apidays
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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...apidays
 
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...Miguel Araújo
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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 educationjfdjdjcjdnsjd
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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...Martijn de Jong
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
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...DianaGray10
 

Recently uploaded (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
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
 
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, ...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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...
 
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...
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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...
 

BP-10 Keeping Your Sanity – Rapid Development & Deployment Tools

  • 1. Keeping Your Sanity
 Rapid Development & Deployment Tools" October 26th, 2011" Gary Cox – Blue Fish Development Group"
  • 2. Overview" Who is the Target Audience? •  New Alfresco developers trying to get a better understanding of potential approaches to developing and deploying custom code" •  Developers that currently have some components of a system in place, but need a more complete solution" •  Developers looking to see “What else is out there?”" •  Some Java platform experience is assumed" What will We Cover Today? •  Discussion of the overall approach and the open source tools that we use" •  Solutions to tricky problems using these standard tools" •  Brief demonstration of using these tools against Alfresco Community 4.0.a" •  Where to go to find more information"
  • 3. Goals" Quick Overview of Alfresco Deployment Concepts •  Review Alfresco deployment approaches" •  Developing in a team environment" Understand the Challenges •  Choosing a deployment model" •  Developing and deploying in a team environment" •  Ramping up new developers" •  Quickly standing up new projects" Tools and Processes to Make this Process Easier •  Use Open Source tools" •  More than just tools: Provide a process" •  Process should be adaptable to different tools"
  • 4. Who is Blue Fish Development Group?" Alfresco Platinum Partner" Focused on ECM for 12 years •  Document Management and Collaboration" •  Custom Application Development" •  Content Migrations" Client Base •  Global 2000" •  Growing Mid-Market Companies" Key Offerings •  Alfresco Quick Starts" •  Turnkey ECM Solutions" •  Alfresco Projects in "Small Bites""
  • 5. Guiding Principles" What are the Guiding Principles for Our Development Tools and Processes?" •  Improve repeatability" •  Controlled releases" •  Ability to quickly ramp up Developers" •  Ability to quickly stand up new Development environments" •  Modularity" •  Keep customizations separate from Alfresco" •  Keep customizations in project-specific paths to support multiple modules" •  Efficiency " •  Ability to develop against a variety of Alfresco versions" •  Reduce cycle time" •  Ability to revert to a known/clean state"
  • 6. Review Potential Deployment Approaches" Many Potential Approaches to Deploying Custom code •  Overwrite existing files under the WEB-INF directory" •  Deploy into /extension or / web-extension paths of the application" •  Deploy code into the /shared path" •  Package customizations into AMP files and deploy into / module path"
  • 7. Points of Pain for These Approaches 1" Overwrite existing files under the WEB-INF directory • Disadvantages" • Nightmare for maintenance" • Can make every upgrade a difficult process" • No central location for customizations"
  • 8. Points of Pain for These Approaches 2" Deploy batch of customized files into the /extension or /web- extension paths of the application • Advantages" • Overriding instead of replacing out of the box functionality, which is a good thing" • Disadvantages" • How to handle packaging and versioning of content?" • Are you all on the same version of the files?" • What version is out there, anyway?" • How to integrate multiple packages?"
  • 9. Points of Pain for These Approaches 3" Deploy code into the /shared path • Advantages" • Doesnʼt get overwritten by new deployments of WAR files" • Good for environment-specific files (like properties files)" • Disadvantages" • This is typically where server specific properties files reside. May require tweaking the set of deployed files" • Potential versioning issues" • Integrating multiple projects"
  • 10. Points of Pain for These Approaches 4" Package customizations into AMP files • Advantages" • Quick to deploy a set of customizations" • Can group customizations into multiple AMPs if needed" • Provides a way to install a known version of an AMP (and an easy way to check the installed version)" • Easier to avoid problems when integrating add-ons from multiple sources" • Disadvantages" • Packaging into an amp can take longer" • Current deployment tool does not support uninstalling an AMP" • Typically still need a way to deploy environment-specific properties files"
  • 11. Team Development Headaches" What are the Considerations when Working as a Team? •  Coordinated modification of the source" •  Source control" •  Continuous Integration" •  Bringing new developers onto a project" •  Modularization" •  Developers can focus on their areas of expertise" •  Can work on subset of project that you are focused on"
  • 12. Blue Fishʼs Approach to Keeping Things Sane" Developed a Set of Tools and Procedures to Meet our Needs •  Open source tools" •  Scripts to bootstrap development environments" •  Scripts to speed up development and deployment tasks" •  Integration with an Integrated Development Environment to let developers get to work quickly."" •  Java developers may not even require extensive Alfresco knowledge to work on specific tasks "" •  Development environments split Alfresco Repository and Share" What Tools Do We Use? •  Subversion" •  Maven" •  Nexus" •  Ant" •  Eclipse" •  Bamboo for CI (not Open Source, but Hudson is another option)"
  • 14. Process Overview 2 (The Bigger Picture)"
  • 15. Overview of Deployment Stack: Build" Maven" •  Maven Benefits" •  Manage transitive dependencies" •  Easy to modularize build" •  Standardization across projects and build types" •  Share build elements (POM inheritance)" •  Single point of project configuration" •  Declarative: What needs to be done? (versus ʻHow?ʼ)" •  Project Object Model (POM) files define projects" •  Project dependencies" •  Project Modules" •  Required Plugins"
  • 16. Overview of Deployment Stack: Artifact Repo" Nexus" •  Used to maintain our corporate Maven repository" •  Alfresco JAR files can be added to the repository as Artifacts" •  Can maintain local repositories and point to public repositories on the Internet" •  Developers donʼt need to know where artifacts come from… ʻone stop shopʼ" •  At Blue Fish we maintain a repository for 3rd Party libraries and our own artifacts"
  • 17. Overview of Deployment Stack: IDE" Eclipse •  We typically use Eclipse, but other IDEs can be used" •  NetBeans" •  IntelliJ IDEA" •  Maven can generate Eclipse projects" •  mvn eclipse:eclipse" •  Import project" •  Point to Maven repository by setting M2_REPO path" •  The Maven POM mappings between source directories and target paths" •  Rapid search across project source and Alfresco source/ config files"
  • 18. Overview of Deployment Stack: Deployment" Ant •  Ant scripts are used for deploying AMP files into Development Environment" •  Pulls out of the box Alfresco WAR files from Maven Repo" •  Deploys AMP file(s) into the WAR" •  Removes old folder structure" •  Can ʻfast-deployʼ into Share" •  Ant scripts can be configured to install multiple AMPs as dependencies as required (for example the Alfresco FDK AMP)" •  Everything comes from the Maven Repo (Maven Ant Tasks)"
  • 19. Overview of Deployment Stack: Source Control" Subversion •  Broad platform and tools support" •  For Continuous Integration (CI), builds are performed on code check-in" •  We use Atlassian Bamboo for CI, but other tools such as Hudson could be used"
  • 20. Process Walkthrough" You Have a New Project (or Projects!) or a New Team Member… How do You Get Started? •  Need to stand up a development environment" •  Need the ability to get additional developers ramped up on the project quickly (may have variety of skill sets)" •  Need to deal with task switching between multiple projects" •  Need self-contained stack to switch from project to project rapidly" Demonstration of a Working Environment •  Developers can get started quickly" •  Can even hand this off to run ʻofflineʼ once Maven dependencies have been downloaded" •  The tools handle packaging the AMP and setting the targets for folders." •  Developers just need to know to write their code in a few source folders" •  Developers donʼt need to know about other modules or dependencies"
  • 21. Standing Up a New Developer" Step 1 •  Get a copy of a project folder" •  Contains an Alfresco installation (Community, in this case)" •  All required tools are in the “tools” folder" •  Downloaded Maven dependencies are in “maven- repo”"
  • 22. Standing Up a New Developer" Step 2 •  Perform source code update to get latest code"
  • 23. Local Build/Deployment Cycle" Step 1 •  Validate that it will build:" •  ʻmvn clean installʼ" Step 2 •  Create Eclipse project:" •  ʻmvn eclipse:eclipseʼ" Step 3 •  Launch Eclipse" •  Import Existing Project into Workspace (trunk directory) to import Alfresco and Share" •  If using Maven Eclipse plug-in, remember to set ʻM2_REPOʼ build path variable and point to ʻmaven-repoʼ (not required if using Eclipse M2Eclipse plug-in)"
  • 24. Local Build/Deployment Cycle" Step 4 •  Save custom code in Eclipse" •  Typically will use existing /src paths" Step 5 •  Test building and deploying into local Alfresco environment:" •  ʻmvn clean installʼ" •  ʻant clean-install-and-deployʼ" •  We have a variety of convenience deployment targets" •  ʻant –projecthelpʼ provides a list of deployment targets" Step 6 •  Start local Alfresco Repository and Share and review changes" •  We start the servers with BAT files" •  Separate Tomcat instances for Alfresco Repository and Alfresco Share" •  BAT file starts the database"
  • 25. Challenges that We Encountered" Environmental •  Had issues with OpenOffice if it was nested too deeply" Maven Challenges •  Alfresco Module Management Tool doesnʼt understand non-numeric version numbers (e.g. 1.0.0-SNAPSHOT)" •  We use a plug-in to produce a version number to strip ʻSNAPSHOTʼ" •  Eclipse integration: Neither the Maven Eclipse plug-in and the Eclipse M2Eclipse plug-in understand AMP packaging" •  Declare ʻJARʼ packaging and explicitly package and include as AMP" ANT •  Maven Ant Tasks" •  Donʼt understand redefining the Central Repository to point at corporate repository." •  Have to explicitly declare a Remote Repository"
  • 26. Interested in the Presentation Materials?" •  We are hoping to be able to provide some portion of the examples and the slides on our FTP site" •  We have a sign in sheet if youʼre interested in getting access to the materials when they are available." •  Check for updates here:" •  http://bit.ly/toeD9Y"
  • 27. Resources" Where to find the tools discussed in this presentation: •  Maven" •  http://maven.apache.org/" •  Maven Ant Tasks" •  http://maven.apache.org/ant-tasks/index.html" •  Nexus" •  http://nexus.sonatype.org/" •  Hudson" •  http://hudson-ci.org/" •  Eclipse" •  http://www.eclipse.org/" •  Ant" •  http://ant.apache.org/" •  Subversion" •  http://subversion.apache.org/" •  Blue Fish Development Group" •  http://www.bluefishgroup.com/"