1. + +
Industrializing eZ Publish
Project development
+
2010-06-25, by Jérôme Vieilledent
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
2. + +
Summary
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
3. + +
Summary
Development environment
OS
Coding environment
Synchronicity
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
4. + +
Summary
Development environment
OS
Coding environment
Synchronicity
Industrializing Tests and Delivery
Automating delivery
Unit tests in eZ Publish
Continuous integration platform
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
6. + +
Development environment
Several issues to solve when working on a project as a team
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
7. + +
Development environment
Several issues to solve when working on a project as a team
Developers’ OS
Can be VERY heterogene
IT Departments may impose an OS (Windows in most cases)
BUT you need to work in an environment as close as possible from the target
environment
VMs are a suitable solution (Virtual Box, VMWare...)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
8. + +
Development environment
Several issues to solve when working on a project as a team
Developers’ OS
Can be VERY heterogene
IT Departments may impose an OS (Windows in most cases)
BUT you need to work in an environment as close as possible from the target
environment
VMs are a suitable solution (Virtual Box, VMWare...)
Developers’ coding environment
Each developer has its preferred IDE
Unicity rimes with productivity => Choose only one IDE (I chose Eclipse)
Easier for developer support or when welcoming a new developer in the team
A good IDE provides all needed tools all-in-one
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
9. + +
Development environment
Several issues to solve when working on a project as a team
Developers’ OS
Can be VERY heterogene
IT Departments may impose an OS (Windows in most cases)
BUT you need to work in an environment as close as possible from the target
environment
VMs are a suitable solution (Virtual Box, VMWare...)
Developers’ coding environment
Each developer has its preferred IDE
Unicity rimes with productivity => Choose only one IDE (I chose Eclipse)
Easier for developer support or when welcoming a new developer in the team
A good IDE provides all needed tools all-in-one
Developers’ synchronicity
Sharing the same sources (SCM like Subversion or Git)
Sharing the same database
Sharing the same media files
Even when working with developers who are far from each other
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
10. + +
Development environment : a solution
Eclipse PDT with useful plugins
Smile eZ Publish plugin (TPL syntax highlight, code completion & content class view)
eZClipse (TPL & INI syntax highlight)
Subversive
Mylyn (Bug tracker integration : Mantis, Trac, Bugzilla, Jira...)
FileSync (see below)
Virtual Box
With an image close to target environment (let’s say Ubuntu Server)
Can be run from a dedicated headless server with VBoxHeadless
FileSync Eclipse plugin
Sync your workspace with a remote server
Your remote server has to be accessible from your local/host computer
Samba or SSHFS are good solutions
Common dedicated MySQL server
eZ Publish (Database cluster mode enabled) + useful extensions
Subversion
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
11. + +
Development environment : a solution
«Foreign» developers case
Different geographical centers working together on the same project
Freelances
Everyone needs to share the same database (Data & Cluster files)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
12. + +
Development environment : a solution
«Foreign» developers case
Different geographical centers working together on the same project
Freelances
Everyone needs to share the same database (Data & Cluster files)
Issues
Too much potential traffic with the database over the internet
Slow
Insecure
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
13. + +
Development environment : a solution
«Foreign» developers case
Different geographical centers working together on the same project
Freelances
Everyone needs to share the same database (Data & Cluster files)
Issues
Too much potential traffic with the database over the internet
Slow
Insecure
Solution
Dedicated Virtual Box Headless server, located in the Project Headquarter
Each foreign developer has its dedicated remote VBox
Sources are sent through SSHFS or Samba (with VPN) via FileSync automatically
Each VBox is local to the database server
Developer accesses to its own development server through HTTP and/or SSH
Fast and secure :-)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
14. Developer sandbox
Developer computer
virtual server
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
16. Main
Database
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
17. Main
Database
Cluster
Database
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
18. Industrializing tests and
delivery
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
19. + +
Automating delivery
Use scripts to deploy your developments & project configuration
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
20. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
21. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
22. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
23. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
24. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
25. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
26. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
27. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
28. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
29. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
30. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
Apache ANT or similar tool...
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
31. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
Apache ANT or similar tool...
... to push your sources/config files into staging/production platform
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
32. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
Apache ANT or similar tool...
... to push your sources/config files into staging/production platform
Connected to your SCM
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
33. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
Apache ANT or similar tool...
... to push your sources/config files into staging/production platform
Connected to your SCM
Make an differential export between tags
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
34. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
Apache ANT or similar tool...
... to push your sources/config files into staging/production platform
Connected to your SCM
Make an differential export between tags
Think about Rollbacks
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
35. + +
Automating delivery
Use scripts to deploy your developments & project configuration
eZ XML Installer
Create / Update content classes, objects and roles
Trigger your modifications from CLI (no more timeouts)
Create your own handler
http://projects.ez.no/ezxmlinstaller
Noven INI Update
Switch from one environment to another regarding configuration
Safely handles your INI files, config.php and cluster mode
All settings centralized in a XML file
http://projects.ez.no/noveniniupdate
Apache ANT or similar tool...
... to push your sources/config files into staging/production platform
Connected to your SCM
Make an differential export between tags
Think about Rollbacks
Soon on projects.ez.no ;-)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
36. + +
Unit tests in eZ Publish
Unit tests development are NEVER a waste of time
You spend 15-25% more time developing tests
You spend 10-20% less time debugging in the client’s test phase
Unit tests then become non-regression tests
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
37. + +
Unit tests in eZ Publish
Unit tests development are NEVER a waste of time
You spend 15-25% more time developing tests
You spend 10-20% less time debugging in the client’s test phase
Unit tests then become non-regression tests
eZ Publish has a test framework
Based on PHPUnit
Only available from SVN (http://pubsvn.ez.no/nextgen)
... And GitHub (http://github.com/ezsystems/ezpublish)
Handy kernel wrapper to easily manipulate content classes/objects/nodes
Run your tests with a temporary and droppable database
More info on eZPedia
http://ezpedia.org/en/ez/testing_ez_publish_test_system
PHPUnit is compatible with Selenium (automated functional tests)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
38. + +
Continuous Integration Platform
Automatically builds your application
Updates from your SCM
Runs your unit and functional tests
Tests your code against your coding standards (PHPCodeSniffer)
Detects messy code (PHPMessDetector)
Makes reports and graphs about these builds
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
39. + +
Continuous Integration Platform
Automatically builds your application
Updates from your SCM
Runs your unit and functional tests
Tests your code against your coding standards (PHPCodeSniffer)
Detects messy code (PHPMessDetector)
Makes reports and graphs about these builds
Very useful on big projects, with extensible team of developers
=> Control
=> Stability
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
40. + +
Continuous Integration Platform
Automatically builds your application
Updates from your SCM
Runs your unit and functional tests
Tests your code against your coding standards (PHPCodeSniffer)
Detects messy code (PHPMessDetector)
Makes reports and graphs about these builds
Very useful on big projects, with extensible team of developers
=> Control
=> Stability
2 main platforms to remember
=> PHPUnderControl (http://www.phpundercontrol.org)
=> Hudson (http://hudson-ci.org/)
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
41. + +
Continuous Integration Platform
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
42. Questions ?
My Blog : http://www.lolart.net (french, soon in english)
My Company : http://www.sqli.com
Industry Finance
Telecom Real Public sector
Estate
Services 21%
SQLI, fournisseur d'innovation - Industrializing eZ Publish project development
#
Notas do Editor
SQLI : 17 agencies including offshore
SQLI : 17 agencies including offshore
1. Developers' OSes
=> Can be VERY heterogene (one is working on Ubuntu Linux, another on Fedora, another on Windows or on Mac OSX)
=> IT departments may impose an OS (Windows in most cases) for several reasons
=> But you need to work in an environment as close as possible from the target environment (Linux in most cases, but can be Solaris), to avoid potential issues when going live in production
=> VMs are a suitable solution. Virtual Box may be the way to go as you can find lots of VBox images of almost every open OS (including Open Solaris) on the internet
2. Developers' coding environment
=> Each developer has its preferred IDE (Eclipse, Netbeans, Vim, TextMate, PHPEdit...)
3. Developers' synchronicity
=> Sharing the same sources
=> Sharing the same database
=> Sharing the same media files
=> Even when working with developers who are far from each other (Cartier : Paris, Nantes, Lyon, Morocco)
1. Developers' OSes
=> Can be VERY heterogene (one is working on Ubuntu Linux, another on Fedora, another on Windows or on Mac OSX)
=> IT departments may impose an OS (Windows in most cases) for several reasons
=> But you need to work in an environment as close as possible from the target environment (Linux in most cases, but can be Solaris), to avoid potential issues when going live in production
=> VMs are a suitable solution. Virtual Box may be the way to go as you can find lots of VBox images of almost every open OS (including Open Solaris) on the internet
2. Developers' coding environment
=> Each developer has its preferred IDE (Eclipse, Netbeans, Vim, TextMate, PHPEdit...)
3. Developers' synchronicity
=> Sharing the same sources
=> Sharing the same database
=> Sharing the same media files
=> Even when working with developers who are far from each other (Cartier : Paris, Nantes, Lyon, Morocco)
1. Developers' OSes
=> Can be VERY heterogene (one is working on Ubuntu Linux, another on Fedora, another on Windows or on Mac OSX)
=> IT departments may impose an OS (Windows in most cases) for several reasons
=> But you need to work in an environment as close as possible from the target environment (Linux in most cases, but can be Solaris), to avoid potential issues when going live in production
=> VMs are a suitable solution. Virtual Box may be the way to go as you can find lots of VBox images of almost every open OS (including Open Solaris) on the internet
2. Developers' coding environment
=> Each developer has its preferred IDE (Eclipse, Netbeans, Vim, TextMate, PHPEdit...)
3. Developers' synchronicity
=> Sharing the same sources
=> Sharing the same database
=> Sharing the same media files
=> Even when working with developers who are far from each other (Cartier : Paris, Nantes, Lyon, Morocco)
Virtual Box : Can be replaced by VMWare. VBoxHeadless => VMWare ESX
Subversion : can be your preferred SCM (Git)
Foreign developers : SQLI : 17 agencies including offshore
Connection to DB : About security, MySQL data exchange is not secured by default, but one can connect to remote DB with SSH tunneling
Remote VBox solution : VBox is in the same LAN than MySQL server => reasonably fast
Foreign developers : SQLI : 17 agencies including offshore
Connection to DB : About security, MySQL data exchange is not secured by default, but one can connect to remote DB with SSH tunneling
Remote VBox solution : VBox is in the same LAN than MySQL server => reasonably fast
Foreign developers : SQLI : 17 agencies including offshore
Connection to DB : About security, MySQL data exchange is not secured by default, but one can connect to remote DB with SSH tunneling
Remote VBox solution : VBox is in the same LAN than MySQL server => reasonably fast