SlideShare a Scribd company logo
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!

More Related Content

What's hot

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
Alkacon Software GmbH & Co. KG
 
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 2013 - Bootstrap your templates
OpenCms Days 2013 - Bootstrap your templatesOpenCms Days 2013 - Bootstrap your templates
OpenCms Days 2013 - Bootstrap your templates
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 reloaded
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
Alkacon 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 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
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 containers
Alkacon 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 spot
OpenCms
 
OpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr SearchingOpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr Searching
Alkacon Software GmbH & Co. KG
 
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
rafaelliu
 
Front-end build tools - Webpack
Front-end build tools - WebpackFront-end build tools - Webpack
Front-end build tools - Webpack
Razvan 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 webpack
NodeXperts
 
Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014Sonata Block Bundle - sfPot March 2014
Sonata Block Bundle - sfPot March 2014
th0masr
 
Bundle your modules with Webpack
Bundle your modules with WebpackBundle your modules with Webpack
Bundle your modules with Webpack
Jake 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 3
David Yell
 
Webpack
Webpack Webpack
Webpack
DataArt
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend development
sparkfabrik
 
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
Pantheon
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with Webpack
Thiago Temple
 

What's hot (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
 

Viewers also liked

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
Alkacon Software GmbH & Co. KG
 
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
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
Alkacon Software GmbH & Co. KG
 
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
Alkacon Software GmbH & Co. KG
 
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
Alkacon Software GmbH & Co. KG
 
Manual Jsf
Manual JsfManual Jsf
Manual Jsf
Mauro Gomez Mejia
 

Viewers also liked (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 to 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 network
Jeremy Lainé
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
Magento Dev
 
Cialug August 2021
Cialug August 2021Cialug August 2021
Cialug August 2021
Andrew Denner
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
Massimiliano Dessì
 
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
Ortus Solutions, Corp
 
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
 
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
camunda 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 better
Andrii 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 Kukushkin
Equnix Business Solutions
 
MoldCamp - multidimentional testing workflow. CIBox.
MoldCamp  - multidimentional testing workflow. CIBox.MoldCamp  - multidimentional testing workflow. CIBox.
MoldCamp - multidimentional testing workflow. CIBox.
Andrii Podanenko
 
JenkinsCI
JenkinsCIJenkinsCI
JenkinsCI
Chandrika Gole
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
Abid Malik
 
MariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introductionMariaDB Enterprise Tools introduction
MariaDB Enterprise Tools introduction
MariaDB 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 Features
WSO2
 
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 more
Acquia
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration Toolbox
Andrii 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 by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
php-user-group-minsk
 

Similar to 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 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
 
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]
 
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 by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 

More from Alkacon Software GmbH & Co. KG

OpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernmentOpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernment
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta
Alkacon Software GmbH & Co. KG
 
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?
Alkacon Software GmbH & Co. KG
 
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
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 portals
Alkacon 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-TS
Alkacon Software GmbH & Co. KG
 
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?
Alkacon 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.5
Alkacon Software GmbH & Co. KG
 
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
Alkacon Software GmbH & Co. KG
 
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
Alkacon 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 documentation
Alkacon 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 extensions
Alkacon Software GmbH & Co. KG
 
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
Alkacon Software GmbH & Co. KG
 

More from 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
 

Recently uploaded

LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 

Recently uploaded (20)

LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 

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!