Video: http://t3con12.chaoscdn.de/T3CON12DE.Int.Automate.FLOW3.and.TYPO3.Deployment.with.Surf.mp4
TYPO3.Surf on Forge: http://forge.typo3.org/projects/show/package-typo3-surf
EXT:coreapi on Forge: http://forge.typo3.org/projects/show/extension-coreapi
45. Deploying a TYPO3 CMS
Challenges
Ext ension Sym
Configuration lin
uploads k
typo3_src Assets „sh int
m od ule Templates
ae o
fileadminr
sub “
git
Special Tasks
46. Deploying a TYPO3 CMS
Delete files in typo3temp
Clear Caches Run Unittests (EXT:phpunit)
(all, pages, configuration)
Run SQL
Execute reports
Special Tasks Add (de-)activate
Set configuration scheduler tasks
Extension UPDATE function
Compare Database Tool
Refresh extension list Create sys_news record
47. Deploying a TYPO3 CMS
Delete files in typo3temp
Clear Caches Run Unittests (EXT:phpunit)
(all, pages, configuration)
Execute reports
a p i Run SQL
T: co re
Special Tasks Add (de-)activate
E X
Set configuration
Compare Database Tool
scheduler tasks
Extension UPDATE function
Refresh extension list Create sys_news record
http://forge.typo3.org/projects/show/extension-coreapi
What does it mean to deploy your code:\n\n- Checkout or update Code from (hopefully) VCS\n- Maybe update some configuration\n- Maybe restart some service (Apache)\n- Clear some cache\n- Do some database updates\n- Follow a detailed release plan\n\nRight order, the same every time\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Story initial Kickoff\n
Story initial Kickoff\n
Story initial Kickoff\n
Story initial Kickoff\n
Story initial Kickoff\n
Story initial Kickoff\n
Surf is a TYPO3 Flow application\nSurf can be used standalone\nSurf can deploy anything\nInfluenced by Capistrano\nEspecially suited for multi-application, multi-server (clustered) deployments\nDiagram of Surf with SSH connections and Git etc.\nSurf is and can be extended with simple PHP\nDeclarative but scriptable\n
Surf is a TYPO3 Flow application\nSurf can be used standalone\nSurf can deploy anything\nInfluenced by Capistrano\nEspecially suited for multi-application, multi-server (clustered) deployments\nDiagram of Surf with SSH connections and Git etc.\nSurf is and can be extended with simple PHP\nDeclarative but scriptable\n
Surf is a TYPO3 Flow application\nSurf can be used standalone\nSurf can deploy anything\nInfluenced by Capistrano\nEspecially suited for multi-application, multi-server (clustered) deployments\nDiagram of Surf with SSH connections and Git etc.\nSurf is and can be extended with simple PHP\nDeclarative but scriptable\n
Surf is a TYPO3 Flow application\nSurf can be used standalone\nSurf can deploy anything\nInfluenced by Capistrano\nEspecially suited for multi-application, multi-server (clustered) deployments\nDiagram of Surf with SSH connections and Git etc.\nSurf is and can be extended with simple PHP\nDeclarative but scriptable\n
Surf is a TYPO3 Flow application\nSurf can be used standalone\nSurf can deploy anything\nInfluenced by Capistrano\nEspecially suited for multi-application, multi-server (clustered) deployments\nDiagram of Surf with SSH connections and Git etc.\nSurf is and can be extended with simple PHP\nDeclarative but scriptable\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Declarative but scriptable\n
Declarative but scriptable\n
Declarative but scriptable\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Base application is basic template\n
Flow application is predefined for Flow\nTasks can be added to stages\nOr insert before or after other tasks\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
* the node\n* apache webserver\n* several virtual hosts\n
* the node\n* apache webserver\n* several virtual hosts\n
* the node\n* apache webserver\n* several virtual hosts\n
* the node\n* apache webserver\n* several virtual hosts\n
* the node\n* apache webserver\n* several virtual hosts\n
* run deployment\n* initialize create directories\n
* run deployment\n* initialize create directories\n
* update checks out the code\n* next points to the next release\n
* switch\n* current points to the latest release\n* next is removed after deployment\n
* switch\n* current points to the latest release\n* next is removed after deployment\n
* switch\n* current points to the latest release\n* next is removed after deployment\n
* switch\n* current points to the latest release\n* next is removed after deployment\n
* next day, another release\n* current points to yesterdays release\n
* initialize don‘t need to do anything\n
* update checks out the new release\n* current still points to yesterdays release\n
* next points to the next release\n* running tests on next\n
* next points to the next release\n* running tests on next\n
* everything is fine\n* current point to the new release\n* previous points to yesterdays release\n* next removed\n
* everything is fine\n* current point to the new release\n* previous points to yesterdays release\n* next removed\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
stages executed one after the other on each host\n
\n
\n
\n
\n
\n
\n
Tasks can be added to stages\nInsert before or after other tasks\n
Tasks can be added to stages\nInsert before or after other tasks\n
Tasks can be added to stages\nInsert before or after other tasks\n
Tasks can be added to stages\nInsert before or after other tasks\n
Tasks can be added to stages\nInsert before or after other tasks\n
Tasks can be added to stages\nInsert before or after other tasks\n
\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* TYPO3 core\n** include in repos as submodule\n* Configuration/..\n** move as much as possible out of the database into files\n** TypoScript, TSConfig, XML-DS, Gridelements\n** versionize these files\n** app assests, templates into „site“ extensions. avoid using fileadmin\n* uploads, „user space“\n** place them in the shared folder. symlink into each release\n* some special tasks needed\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
* basically everything you need to do by hand in the backend after a deployment\n* examples, much more you can think of.\n* most of them not yet „scriptable“\n* missing: CLI Api for these tasks\n\n* EXT:coreapi\n** provide Service/API-Classes for own usage\n** provide a CLI\n\n* can be found on forge\n* still work in progress\n* thanks to georg ringer\n\n
Tackle the issue of automated deployment for TYPO3 CMS\n\n* finish coreapi\n* make use of it in Surf (create a Surf Task, Options)\n* tackle several issues in Surf (like option handling, arguments)\n* Best practice doc („Special challenges“)\n** how should my repos look like\n** how to get all of my application specific config out of the database\n* some more things on the agenda\n* Things go‘ing to happen in the next year\n\n
Tackle the issue of automated deployment for TYPO3 CMS\n\n* finish coreapi\n* make use of it in Surf (create a Surf Task, Options)\n* tackle several issues in Surf (like option handling, arguments)\n* Best practice doc („Special challenges“)\n** how should my repos look like\n** how to get all of my application specific config out of the database\n* some more things on the agenda\n* Things go‘ing to happen in the next year\n\n
Tackle the issue of automated deployment for TYPO3 CMS\n\n* finish coreapi\n* make use of it in Surf (create a Surf Task, Options)\n* tackle several issues in Surf (like option handling, arguments)\n* Best practice doc („Special challenges“)\n** how should my repos look like\n** how to get all of my application specific config out of the database\n* some more things on the agenda\n* Things go‘ing to happen in the next year\n\n
Tackle the issue of automated deployment for TYPO3 CMS\n\n* finish coreapi\n* make use of it in Surf (create a Surf Task, Options)\n* tackle several issues in Surf (like option handling, arguments)\n* Best practice doc („Special challenges“)\n** how should my repos look like\n** how to get all of my application specific config out of the database\n* some more things on the agenda\n* Things go‘ing to happen in the next year\n\n