SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Daniel Seidel – Alkacon Software GmbH
OpenCms development
workflow using Jenkins and
Docker
28.09.2015
2
What can you expect?
Introduction to the Alkacon
development infrastructure
Presentation of the new
OpenCms Dev-Features
Development Scenario: Core
3
localhost
ci-autobuild
ci-10-0-x
ci-release
Development Scenario: Core
4
localhost
ci-autobuild
ci-10-0-x
ci-release
Why does it work good?
● Much Java Programming
● Each developer with his own task
● Always default configuration
What is different from the core scenario?
● Less Java Code, more Formatters etc.
● Developers may interact closer
● Special configurations
● Far more module import/export
● Less restarts necessary (jar update)
5
Development Scenario: Website
Is the core infrastructure good as well?
ci-autobuild
ci-10-0-x
ci-release
Development Scenario: Website
6
localhost
Why doesn’t it work good?
● Painful module import/export/check-in
● Configurations may diverge
● Merge conflicts for XML contents
● Many projects, many servers
● Problems getting from development
to production
7
Website: Better environment
localhost
website
docu
haproxy
ci-docker
...
online.server.com
HTTP and SMB
HTTP and SMB
8
Website: Accomplishments (I)
localhost
online.server.com
HTTP and SMB
HTTP and SMB
website
docu
haproxy
ci-docker
...
Docker intro (very short)
● Container like minimal VM
● Build from scripts
● Communication facilities
● Very portable
Docker benefits
● One (simple) server
● Automatic setup for containers
● Shared base images
● Easy switch
development  production
9
Website: Accomplishments (II)
localhost
online.server.com
HTTP and SMB
HTTP and SMB
website
docu
haproxy
ci-docker
...
Flexible workflow
● Work on
● Server only
● Mount VFS
● Locally only
● Check-in from
● OpenCms
● Server/Docker
● Localhost
● Even the production server
● Live Demo
Git & Jenkins & Docker
Demo
Demo Demo
Demo
デモ
Development infrastructure
● SMB module management:
● Import, export or delete modules via network share
● Git support for OpenCms
● Check in to Git from the OpenCms workplace
● XSLT transformations for configuration files
● Manipulate the configuration on start up
● Reduced export format
● Reduce manifest changes
● Avoid merge conflicts
11
We use: New OpenCms features
● New Wrapper for CmsJLanRepository
● Configure in opencms-importexport.xml
12
SMB module management (I)
<opencms>
<!-- other configuration options -->
<repositories>
<repository name="OPENCMS"
class="org.opencms.jlan.CmsJLanRepository>
<params>
<!-- other parameters -->
<param name="wrapper">
org.opencms.file.wrapper.CmsResourceWrapperModules
</param>
</params>
</repository>
</repositories>
</opencms>
● When you mount the network share:
● A special folder “/modules” is present
● With the empty subfolder “import”
● And the subfolder “export” listing all installed modules
● With the folders you perform module operations
13
SMB module management (II)
Operation Performed via
Import module (add or replace) Drop module zip into “/modules/import/”
Export module Copy module zip from “/modules/export/”
Delete module Delete module zip in “/modules/export/”
How to determine the import site?
● New option in the module management
● Edit module: “Import site”
● Specifies the import site
● Default
● Root site for the SMB module management
● Current site in the administration view
14
SMB module management (III)
● Live Demo
Add, update, export, delete a module
Demo
Demo Demo
Demo
デモ
SMB module management
How to check in a module?
16
Git support for OpenCms (I)
Can we do this automatically?
● Live Demo
From OpenCms to Git in one step
Demo
Demo Demo
Demo
デモ
Git support
How does the support work?
● Workplace app + shell script + config file
● WEB-INF/git-scripts/module-checkin.sh (executable)
● WEB-INF/git-scripts/module-checkin.conf (config)
● Also: Stand-alone as shell script + config file
● Useful with SMB share’s modules feature
● One-click update of (local) repository
18
Git support for OpenCms (II)
config
executable
Read defaults
Read defaults
Export modules and
Call with params
update
How to enable Git support?
● Make the file
● WEB-INF/git-scripts/module-checkin.sh
● executable.
● Place a suitable configuration under
● WEB-INF/git-scripts/module-checkin.conf
● (you may copy the module-checkin.conf.demo)
19
Git support for OpenCms (III)
Usage for website development
● Git support
● Direct check-in via the workplace app
● Backup configured modules on Docker restart via
script
● (local check-in via script)
● SMB module management
● Backup configured modules on Docker restart
● (local check-in via script)
● (one-click module updates)
20
Short summary – feature usage
The problem
● Different config for different dockers
● Different config development  production
21
Config adjustment via XSLT (I)
Typically replaced items
● Site configuration (hostname)
● Email server configuration
● ...
Possible solutions
● Different config files
● Script-based config file manipulation during setup
● XSLT transformation on config load
Implementation details
● One XSLT file for all OpenCms config files
● XSLT 1.0 + special macro + parameters
● Transformations performed on start-up
How to apply transformations?
● Just place a file opencms-configuration.xslt
under WEB-INF/config/
22
Config adjustment via XSLT (II)
23
A typical XSLT file
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="..." version="1.0">
<!-- Parameter for current file name. Set by OpenCms. -->
<xsl:param name="file" />
<!-- Mandatory. The @dtd@ string is a special macro. -->
<xsl:output doctype-system="@dtd@" indent="yes" />
<!-- Copy everything that isn't matched by the other rules. -->
<xsl:template match="@* | node()">
<xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy>
</xsl:template>
<!-- Node that really does something -->
<xsl:template match="/opencms/system/sites">
<sites>
<workplace-server>http://days-demo</workplace-server><!-- ... -->
</sites>
</xsl:template>
</xsl:stylesheet>
What happens if You alter configurations
inside OpenCms?
● Question for you
Where to look for details?
● CmsConfigurationManager
● transformConfiguration(...)
Good for “Playing”
● The adjusted configuration is written in the log
at debug level
24
Just for the records
● Live Demo
How we use for website development
Demo
Demo Demo
Demo
デモ
XSLT transformations
What’s the problem?
● Module manifest is very verbose
● In particular information like
● Export date
● Modification dates
● Authors
● (UUIDs)
● Information of “non-module” parent folders
● May cause merge conflicts
● Will cause many unnecessary and confusing
changes in the Git repository
26
Reduced export mode (I)
Possible solutions
● Do not write “critical” data to the manifest at all
● Replace “critical” data with macros, e.g.,
● FILE_TIME
● IMPORT_TIME
Possible problems
● Information loss
● What are the best dates?
● Time shifts?
● Renewing exported JSPs needs newer timestamp
27
Reduced export mode (II)
Current solution
● Two export modes
● “Default”: with all information, optional macros for
modification dates
● “Reduced”: with “critical” information omitted
● Mode set on a module basis
28
Reduced export mode (III)
Discuss possible problems or suggest
improvements!
● Live Demo
Reduced vs. Default
Demo
Demo Demo
Demo
デモ
Comparison of export formats
● The shown setup
● Is very flexible in how you work
● Simplifies module import/export significantly
● Uses various additional software
● Jenkins
● Docker
● Git
● Eases deployment
● Takes advantage of various new OpenCms
features
30
Summary – Development setup
● SMB module management
● Good for automatization
● Eases module import / export
● Auto-install via auto-copy on build (we use gradle)
● Be aware: restarts for code changes remain
● Git support
● Wide variety of usage scenarios
● App at server or localhost
● Script only and SMB-share
● Fine-grained control on module check-in steps
● Consider: precise commit  maximal automation
● At the moment: only for Linux (shell script)
31
Summary - Features
● XSLT-Transformations
● Easy config adjustment for different servers
● Transformations applied on startup
● One XSLT file for all files included by opencms.xml
● Good for updates?
● Reduced export format
● Purpose: Avoid merge conflicts
● Think about information loss
● Alternative:
timestamp macros (FILE_TIME, IMPORT_TIME)
32
Summary - Features
● Git-support:
● User-specific settings
● (cross-platform solution via jGit)
● Module export format
● Enable reduced export also for database exports
● (Separate manifest in various files)
● One per resource
● One for the module
● (Combine reduced format and timestamp macros)
33
Planned improvements
Any suggestions? Please let us know!
Daniel Seidel
Alkacon Software GmbH
http://www.alkacon.com
http://www.opencms.org
Thank you very much for your attention!

Más contenido relacionado

La actualidad más candente

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 Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloadedOpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloadedAlkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...Alkacon Software GmbH & Co. KG
 
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 containersAlkacon Software GmbH & Co. KG
 
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayrafaelliu
 
Front-end build tools - Webpack
Front-end build tools - WebpackFront-end build tools - Webpack
Front-end build tools - WebpackRazvan Rosu
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpackNodeXperts
 
Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014th0masr
 
Bundle your modules with Webpack
Bundle your modules with WebpackBundle your modules with Webpack
Bundle your modules with WebpackJake Peyser
 
PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3David Yell
 
Webpack
Webpack Webpack
Webpack DataArt
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend developmentsparkfabrik
 
Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8Pantheon
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with WebpackThiago Temple
 

La actualidad más candente (20)

OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9OpenCms Days 2013 - Start rolling with OpenCms 9
OpenCms Days 2013 - Start rolling with OpenCms 9
 
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 2013 - Bootstrap your templates
OpenCms Days 2013 - Bootstrap your templatesOpenCms Days 2013 - Bootstrap your templates
OpenCms Days 2013 - Bootstrap your templates
 
OpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloadedOpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloaded
 
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 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
 
OpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in actionOpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in action
 
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: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
 
OpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr SearchingOpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr Searching
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
 
Front-end build tools - Webpack
Front-end build tools - WebpackFront-end build tools - Webpack
Front-end build tools - Webpack
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpack
 
Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014
 
Bundle your modules with Webpack
Bundle your modules with WebpackBundle your modules with Webpack
Bundle your modules with Webpack
 
PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3
 
Webpack
Webpack Webpack
Webpack
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend development
 
Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with Webpack
 

Destacado

Destacado (6)

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: 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 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
 
OpenCms Days 2012 - OpenCms 8 as a JSR-286 compliant portlet server
OpenCms Days 2012 - OpenCms 8 as a JSR-286 compliant portlet serverOpenCms Days 2012 - OpenCms 8 as a JSR-286 compliant portlet server
OpenCms Days 2012 - OpenCms 8 as a JSR-286 compliant portlet server
 
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
 
Manual Jsf
Manual JsfManual Jsf
Manual Jsf
 

Similar a OpenCms Days 2015 Workflow using Docker and Jenkins

Serving QML applications over the network
Serving QML applications over the networkServing QML applications over the network
Serving QML applications over the networkJeremy Lainé
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoMagento Dev
 
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]Ortus Solutions, Corp
 
Brad Wood 5 command box modules you should be using
Brad Wood   5 command box modules you should be usingBrad Wood   5 command box modules you should be using
Brad Wood 5 command box modules you should be usingOrtus Solutions, Corp
 
bed-con 2015 - From Virtual Machines to Containers
bed-con 2015 - From Virtual Machines to Containersbed-con 2015 - From Virtual Machines to Containers
bed-con 2015 - From Virtual Machines to Containerscamunda services GmbH
 
[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...
[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...
[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...DataScienceConferenc1
 
CIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops betterCIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops betterAndrii Podanenko
 
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander KukushkinPGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander KukushkinEqunix Business Solutions
 
MoldCamp - multidimentional testing workflow. CIBox.
MoldCamp  - multidimentional testing workflow. CIBox.MoldCamp  - multidimentional testing workflow. CIBox.
MoldCamp - multidimentional testing workflow. CIBox.Andrii Podanenko
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdfAbid Malik
 
MariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introductionMariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introductionMariaDB plc
 
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesMigrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesWSO2
 
6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production 6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production Hung Lin
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and moreAcquia
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxAndrii Podanenko
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Annie Huang
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Max Romanovsky
 

Similar a OpenCms Days 2015 Workflow using Docker and Jenkins (20)

Serving QML applications over the network
Serving QML applications over the networkServing QML applications over the network
Serving QML applications over the network
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
 
Cialug August 2021
Cialug August 2021Cialug August 2021
Cialug August 2021
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
 
Brad Wood 5 command box modules you should be using
Brad Wood   5 command box modules you should be usingBrad Wood   5 command box modules you should be using
Brad Wood 5 command box modules you should be using
 
bed-con 2015 - From Virtual Machines to Containers
bed-con 2015 - From Virtual Machines to Containersbed-con 2015 - From Virtual Machines to Containers
bed-con 2015 - From Virtual Machines to Containers
 
[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...
[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...
[DSC Europe 23] Matteo Molteni - Implementing a Robust CI Workflow with dbt f...
 
CIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops betterCIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops better
 
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander KukushkinPGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
PGConf.ASIA 2019 Bali - PostgreSQL on K8S at Zalando - Alexander Kukushkin
 
MoldCamp - multidimentional testing workflow. CIBox.
MoldCamp  - multidimentional testing workflow. CIBox.MoldCamp  - multidimentional testing workflow. CIBox.
MoldCamp - multidimentional testing workflow. CIBox.
 
JenkinsCI
JenkinsCIJenkinsCI
JenkinsCI
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
MariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introductionMariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introduction
 
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesMigrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
 
6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production 6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and more
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration Toolbox
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 

Más de Alkacon Software GmbH & Co. KG

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 portalsAlkacon Software GmbH & Co. KG
 
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-TSAlkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5Alkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationAlkacon Software GmbH & Co. KG
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsAlkacon Software GmbH & Co. KG
 

Más de Alkacon Software GmbH & Co. KG (13)

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 - 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
 
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 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
 
OpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collectorOpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collector
 
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensions
 
Open cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_releaseOpen cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_release
 

Último

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Último (20)

Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

OpenCms Days 2015 Workflow using Docker and Jenkins

  • 1. Daniel Seidel – Alkacon Software GmbH OpenCms development workflow using Jenkins and Docker 28.09.2015
  • 2. 2 What can you expect? Introduction to the Alkacon development infrastructure Presentation of the new OpenCms Dev-Features
  • 4. Development Scenario: Core 4 localhost ci-autobuild ci-10-0-x ci-release Why does it work good? ● Much Java Programming ● Each developer with his own task ● Always default configuration
  • 5. What is different from the core scenario? ● Less Java Code, more Formatters etc. ● Developers may interact closer ● Special configurations ● Far more module import/export ● Less restarts necessary (jar update) 5 Development Scenario: Website Is the core infrastructure good as well?
  • 6. ci-autobuild ci-10-0-x ci-release Development Scenario: Website 6 localhost Why doesn’t it work good? ● Painful module import/export/check-in ● Configurations may diverge ● Merge conflicts for XML contents ● Many projects, many servers ● Problems getting from development to production
  • 8. 8 Website: Accomplishments (I) localhost online.server.com HTTP and SMB HTTP and SMB website docu haproxy ci-docker ... Docker intro (very short) ● Container like minimal VM ● Build from scripts ● Communication facilities ● Very portable Docker benefits ● One (simple) server ● Automatic setup for containers ● Shared base images ● Easy switch development  production
  • 9. 9 Website: Accomplishments (II) localhost online.server.com HTTP and SMB HTTP and SMB website docu haproxy ci-docker ... Flexible workflow ● Work on ● Server only ● Mount VFS ● Locally only ● Check-in from ● OpenCms ● Server/Docker ● Localhost ● Even the production server
  • 10. ● Live Demo Git & Jenkins & Docker Demo Demo Demo Demo デモ Development infrastructure
  • 11. ● SMB module management: ● Import, export or delete modules via network share ● Git support for OpenCms ● Check in to Git from the OpenCms workplace ● XSLT transformations for configuration files ● Manipulate the configuration on start up ● Reduced export format ● Reduce manifest changes ● Avoid merge conflicts 11 We use: New OpenCms features
  • 12. ● New Wrapper for CmsJLanRepository ● Configure in opencms-importexport.xml 12 SMB module management (I) <opencms> <!-- other configuration options --> <repositories> <repository name="OPENCMS" class="org.opencms.jlan.CmsJLanRepository> <params> <!-- other parameters --> <param name="wrapper"> org.opencms.file.wrapper.CmsResourceWrapperModules </param> </params> </repository> </repositories> </opencms>
  • 13. ● When you mount the network share: ● A special folder “/modules” is present ● With the empty subfolder “import” ● And the subfolder “export” listing all installed modules ● With the folders you perform module operations 13 SMB module management (II) Operation Performed via Import module (add or replace) Drop module zip into “/modules/import/” Export module Copy module zip from “/modules/export/” Delete module Delete module zip in “/modules/export/”
  • 14. How to determine the import site? ● New option in the module management ● Edit module: “Import site” ● Specifies the import site ● Default ● Root site for the SMB module management ● Current site in the administration view 14 SMB module management (III)
  • 15. ● Live Demo Add, update, export, delete a module Demo Demo Demo Demo デモ SMB module management
  • 16. How to check in a module? 16 Git support for OpenCms (I) Can we do this automatically?
  • 17. ● Live Demo From OpenCms to Git in one step Demo Demo Demo Demo デモ Git support
  • 18. How does the support work? ● Workplace app + shell script + config file ● WEB-INF/git-scripts/module-checkin.sh (executable) ● WEB-INF/git-scripts/module-checkin.conf (config) ● Also: Stand-alone as shell script + config file ● Useful with SMB share’s modules feature ● One-click update of (local) repository 18 Git support for OpenCms (II) config executable Read defaults Read defaults Export modules and Call with params update
  • 19. How to enable Git support? ● Make the file ● WEB-INF/git-scripts/module-checkin.sh ● executable. ● Place a suitable configuration under ● WEB-INF/git-scripts/module-checkin.conf ● (you may copy the module-checkin.conf.demo) 19 Git support for OpenCms (III)
  • 20. Usage for website development ● Git support ● Direct check-in via the workplace app ● Backup configured modules on Docker restart via script ● (local check-in via script) ● SMB module management ● Backup configured modules on Docker restart ● (local check-in via script) ● (one-click module updates) 20 Short summary – feature usage
  • 21. The problem ● Different config for different dockers ● Different config development  production 21 Config adjustment via XSLT (I) Typically replaced items ● Site configuration (hostname) ● Email server configuration ● ... Possible solutions ● Different config files ● Script-based config file manipulation during setup ● XSLT transformation on config load
  • 22. Implementation details ● One XSLT file for all OpenCms config files ● XSLT 1.0 + special macro + parameters ● Transformations performed on start-up How to apply transformations? ● Just place a file opencms-configuration.xslt under WEB-INF/config/ 22 Config adjustment via XSLT (II)
  • 23. 23 A typical XSLT file <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="..." version="1.0"> <!-- Parameter for current file name. Set by OpenCms. --> <xsl:param name="file" /> <!-- Mandatory. The @dtd@ string is a special macro. --> <xsl:output doctype-system="@dtd@" indent="yes" /> <!-- Copy everything that isn't matched by the other rules. --> <xsl:template match="@* | node()"> <xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy> </xsl:template> <!-- Node that really does something --> <xsl:template match="/opencms/system/sites"> <sites> <workplace-server>http://days-demo</workplace-server><!-- ... --> </sites> </xsl:template> </xsl:stylesheet>
  • 24. What happens if You alter configurations inside OpenCms? ● Question for you Where to look for details? ● CmsConfigurationManager ● transformConfiguration(...) Good for “Playing” ● The adjusted configuration is written in the log at debug level 24 Just for the records
  • 25. ● Live Demo How we use for website development Demo Demo Demo Demo デモ XSLT transformations
  • 26. What’s the problem? ● Module manifest is very verbose ● In particular information like ● Export date ● Modification dates ● Authors ● (UUIDs) ● Information of “non-module” parent folders ● May cause merge conflicts ● Will cause many unnecessary and confusing changes in the Git repository 26 Reduced export mode (I)
  • 27. Possible solutions ● Do not write “critical” data to the manifest at all ● Replace “critical” data with macros, e.g., ● FILE_TIME ● IMPORT_TIME Possible problems ● Information loss ● What are the best dates? ● Time shifts? ● Renewing exported JSPs needs newer timestamp 27 Reduced export mode (II)
  • 28. Current solution ● Two export modes ● “Default”: with all information, optional macros for modification dates ● “Reduced”: with “critical” information omitted ● Mode set on a module basis 28 Reduced export mode (III) Discuss possible problems or suggest improvements!
  • 29. ● Live Demo Reduced vs. Default Demo Demo Demo Demo デモ Comparison of export formats
  • 30. ● The shown setup ● Is very flexible in how you work ● Simplifies module import/export significantly ● Uses various additional software ● Jenkins ● Docker ● Git ● Eases deployment ● Takes advantage of various new OpenCms features 30 Summary – Development setup
  • 31. ● SMB module management ● Good for automatization ● Eases module import / export ● Auto-install via auto-copy on build (we use gradle) ● Be aware: restarts for code changes remain ● Git support ● Wide variety of usage scenarios ● App at server or localhost ● Script only and SMB-share ● Fine-grained control on module check-in steps ● Consider: precise commit  maximal automation ● At the moment: only for Linux (shell script) 31 Summary - Features
  • 32. ● XSLT-Transformations ● Easy config adjustment for different servers ● Transformations applied on startup ● One XSLT file for all files included by opencms.xml ● Good for updates? ● Reduced export format ● Purpose: Avoid merge conflicts ● Think about information loss ● Alternative: timestamp macros (FILE_TIME, IMPORT_TIME) 32 Summary - Features
  • 33. ● Git-support: ● User-specific settings ● (cross-platform solution via jGit) ● Module export format ● Enable reduced export also for database exports ● (Separate manifest in various files) ● One per resource ● One for the module ● (Combine reduced format and timestamp macros) 33 Planned improvements Any suggestions? Please let us know!
  • 34. Daniel Seidel Alkacon Software GmbH http://www.alkacon.com http://www.opencms.org Thank you very much for your attention!