* **Deployment of TYPO3v4/6 installations**
Workshop by Loek Hilgersom at T3DD12 - 2012-04-14 - Sheet at \url{http://www.slideshare.net/netcoop/prNutzernameesentation-automatic-deployment-with-typo3v4}
Deployment is a topic for version 6.0
Tobias Liebig (@etobi; tobias.liebig@typo3.org ) is leader of this deployment team
*Is there a forge project already? Yes! Join the project here: *\url{*http://forge.typo3.org/projects/extension-deployment*}
For more persistence I moved these notes to the forge wiki:
* \url{http://forge.typo3.org/projects/extension-deployment/wiki/T3dd12\_notes\_workshop}
**Wish list:**
* General file sync of course
* Have certain TypoScript constants for each system
* id conflict of database records (esp. tt\_content, pages, etc..)
* EXT:identity to introduce UUIDs
* as system extension
* relations between records (tt\_conten.pid > pages.uid) by using the uuid instead of the uid
* MySQL auto\_increment\_offset (e.g. dev creates odd uids, prod creates even ids) (environment interleaving)
* reserve "space" by increasing the AUTO\_INCREMENT value (ALTER TABLE tbl AUTO\_INCREMENT = xx;)
* references to ID by TS set
* take DBAL in account
* Migrations for database records
* like loek's delta updates
* auto-completion for the shell-scripts
* bash autocompletion? well.. that's depending on the tool, but not a general problem (SteffenG)
* Could work: \url{http://tldp.org/LDP/abs/html/tabexpansion.html#USEGETOPTEX}
* Usage of TYPO3 API to create, update records instead of MySQL direct inserts
* Automatically update reference index
* Also processing by custom tcehooks will applied too
* These records should not be created with TCEmain, instead the existing records should be transferred (including sys\_history relations, cruser info, etc.) (Michael)
* Environment specific settings separated in localconf.php (Database connection settings, etc.)
* Current Idea: have some extend\_localconf.php for each system and include this localconf.php
* Downside: Needs to be inserted at the end, otherwise overrwritten by Install Tool (so kind of hacky solution at the moment)
* there were some ideas in the mailing list ( \url{http://lists.typo3.org/pipermail/typo3-team-core/2010-November/045498.html} ) to introduce another token (####) below the settings set by install tool or extension manager, so that you have a beginning and ending marker, where the install tool and extension manager is allowed to write -> this would allow a safe include of a local/ project based localconf
* Improve CLI API in the core
* clear caches
* safely clear temp files (typo3\_temp) to avoid empty images on different systems
* (de)activate / remove extensions
* phpmyadmin or adminer should never be deployed to live system (not only deactivated), but developer tools like devlog should always be present in development systems
* run compare tool (like t3deploy)
* Activate Maintenance mode
* different options, as in current backend → disable backend for editors, for all,…
* maybe show a maintenance.html while building
* maybe generate symlinks to another version of the current site, while the new one is generated
* We probably want to have two swapping installations to do smoketests before switching anyways ... (Surf can do that)
* option for frontend maintenance to lock interactive changes of datasets by userinputs
* rsync files (uploads/, fileadmin) from one to another system
* e.g. from the production to a staging/testing system
* Attention: In some Systems you need database entries for "DAM" and "FAL"
* Include a procedure for creating and applying datasets
* dataset for clean new development setup
* datasets for testdata
* dataset which you pull from an existing project and can be used as a basis for further development
**Links:**
* Deployment Project for TYPO3v4: \url{http://forge.typo3.org/projects/extension-deployment}
* TYPO3.Surf \url{http://forge.typo3.org/projects/show/package-typo3-surf}
* dbdeploy: \url{http://dbdeploy.com/development/future-features/}
* Import t3d by CLI: \url{http://www.typo3.net/forum/beitraege/extensions\_schreiben/108055/}
* Continuous deployment (AOE Media): \url{http://www.slideshare.net/typo3media/continuous-deployment-5345889}
* Apache-Ivy (dependency manager): \url{http://ant.apache.org/ivy/}
* YADT - an Augmented Deployment Tool: \url{http://code.google.com/p/yadt/}
* Continuous Integration server: \url{http://integrityapp.com/}
* Jenkins Continious Integration : \url{http://jenkins-ci.org/}
* TYPO3v4 Console Interface (in the works; standalone-application): \url{http://forge.typo3.org/projects/show/typo3v4-console}
* EXT: t3deploy ( \url{http://typo3.org/extensions/repository/view/t3deploy} ; \url{http://forge.typo3.org/projects/show/extension-t3deploy}; Updated version: \url{https://github.com/svparijs/T3deploy.git} )
* TYPO3-Installer ( \url{https://github.com/netcoop/typo3-installer} )
* EXT: aoe\_dbsequenzer ( \url{http://typo3.org/extensions/repository/view/aoe\_dbsequenzer} )
* EXT: identity ( \url{http://forge.typo3.org/projects/show/extension-identity} ; \url{http://typo3.org/extensions/repository/view/identity} )
* Liquibase - Database VersionControlling \url{http://www.liquibase.org/}
Added later - to be reviewed and worked into this document
**Ideas for implementation**
* * use CONTEXT Environment Variables for TS Conditions
* * see Ideas from @lolli42 in "Content Deployment and Migration" on forge (from #t3chh11)
* * use uuids
* * possible additional feature: implement L10n-Manager compatible workflow
* * aliases for TS Settings (page id on system 1 -> alias -> page id on system 2)
* * workflow working forward and backwards (deploy content-changes from live to dev systems)
* *
*