* **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) * * *
{}