FLOW & TYPO3 Deployment         with
Christopher Hlubek networkteam.com     Tobias Liebig etobi.deYour     Speakers
How to deployyour code       ?
ManualDeployment
Manual deployment# ssh testuser@my-staging-server.example.comuser123 $ cd /var/www/projectuser123 $ git pull --rebaseuser1...
AutomatedDeployment
Possible solutions  Bash       Phing     Ant  Script     Script   ScriptCapistrano     ...                      PHP?
Environments                 Integration           Load-TestingLive   Staging                               Development   ...
Requirements  Multiple               Rollback     ExtensibilityEnvironmentsSmoke Tests    Clustering        ...
Meet
Where‘s the          waveContinuousIntegration   Surf     InfrastructureDevelopment
Ride the           wave                  Surf             Repository        Your  application   Deployment                ...
Build/Surf/planetflow3.php<?php$workflow = new TYPO3SurfDomainModelSimpleWorkflow();$deployment->setWorkflow($workflow);$applic...
Running the deployment
Surf ArchitecturePackages           Your package               Surf                          Standalone            Flow   ...
The Surf Model              Deployment               EnvironmentsWorkflow                Deployment                  Appli...
Workflow         initialize   Create release structure         update       Code update (e.g. Git)         migrate      Mi...
TasksWorkflow            Base Application initialize   Create Directories  update      Create Symlinks      Git Checkout  ...
Adding TasksWorkflow             Flow Application initialize    Create Directories  update        Create Symlinks     Git ...
Task           Taskexecute(...)rollback(...)
RollbackWorkflow            Base Application initialize   Create Directories  update      Create Symlinks      Git Checkou...
RollbackWorkflow            Base Application initialize   Create Directories  update      Create Symlinks      Git Checkou...
RollbackWorkflow            Base Application initialize   Create Directories  update      Create Symlinks      Git Checkou...
The    Node viewmyserver1.example.com               Apache           www.example.com VHosts  initialize
The    Node viewmyserver1.example.com               Apache          Deployment path                             ├── cache ...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
The       Node view                                                  Next releasemyserver1.example.com           Apache   ...
The    Node viewmyserver1.example.com               Apache           Deployment path                              ├──   ca...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
The         Node viewmyserver1.example.com               Apache              Deployment path                              ...
Multiple Nodes           myserver1   myserver2   myserver3Workflow
Multiple Nodes           myserver1     myserver2     myserver3Workflow            initialize    initialize    initialize
Multiple Nodes           myserver1     myserver2     myserver3Workflow            initialize    initialize    initialize  ...
Multiple Nodes           myserver1     myserver2     myserver3Workflow            initialize    initialize    initialize  ...
Multiple Nodes           myserver1     myserver2     myserver3Workflow            initialize    initialize    initialize  ...
Multiple Nodes           myserver1     myserver2     myserver3Workflow            initialize    initialize    initialize  ...
Further FeaturesMulti applicationSimulate DeploymentsSmoke testsCustom tasks
Application
Deploying a Flow Application          Flow Application Template    Create       Composer         Symlink  Directories     ...
Application              TYPO3
Deploying a TYPO3 CMS                  Challenges                    Ext ension       Sym                   Configuration  ...
Deploying a TYPO3 CMS                             Delete files in typo3temp     Clear Caches                   Run Unittest...
Deploying a TYPO3 CMS                                 Delete files in typo3temp       Clear Caches                      Run...
Project DeploymentEXT:coreapi   TYPO3 Surf   Best Practice    ...
Budget application for sprints pending.
Join the discussion on forge.
Additional Sponsoring needed.
Talk to me.
Deploying a TYPO3 CMS      TYPO3CMS Application Template  Create        Symlink        ExecuteDirectories      Data       ...
Current StateGit is favoredFlexible update plannedSVN, rsync, TarIn daily use for productionBut in Beta stateStable releas...
Questions   ?
Upcoming SlideShare
Loading in...5
×

T3CON12 Flow and TYPO3 deployment with surf

2,368

Published on

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

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,368
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • 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&amp;#x2018;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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;site&amp;#x201C; extensions. avoid using fileadmin\n* uploads, &amp;#x201E;user space&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 &amp;#x201E;scriptable&amp;#x201C;\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 (&amp;#x201E;Special challenges&amp;#x201C;)\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&amp;#x2018;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 (&amp;#x201E;Special challenges&amp;#x201C;)\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&amp;#x2018;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 (&amp;#x201E;Special challenges&amp;#x201C;)\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&amp;#x2018;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 (&amp;#x201E;Special challenges&amp;#x201C;)\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&amp;#x2018;ing to happen in the next year\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * back to Surf\n* Application for TYPO3CMS\n
  • * back to Surf\n* Application for TYPO3CMS\n
  • * back to Surf\n* Application for TYPO3CMS\n
  • * back to Surf\n* Application for TYPO3CMS\n
  • * back to Surf\n* Application for TYPO3CMS\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • T3CON12 Flow and TYPO3 deployment with surf

    1. 1. FLOW & TYPO3 Deployment with
    2. 2. Christopher Hlubek networkteam.com Tobias Liebig etobi.deYour Speakers
    3. 3. How to deployyour code ?
    4. 4. ManualDeployment
    5. 5. Manual deployment# ssh testuser@my-staging-server.example.comuser123 $ cd /var/www/projectuser123 $ git pull --rebaseuser123 $ git submodule inituser123 $ git submodule updateuser123 $ rm -rf Data/Temporary/Productionuser123 $ ./flow3 doctrine:migrateuser123 $ ./flow3 cache:warmup# ssh user123@my-live-server1.example.comuser123 $ cd /home/myproject/public_htmluser123 $ git pull --rebaseuser123 $ git submodule inituser123 $ git submodule updateuser123 $ rm -rf Data/Temporary/Productionuser123 $ ./flow3 doctrine:migrateuser123 $ ./flow3 cache:warmup# ssh user123@my-live-server2.example.comuser123 $ cd /home/myproject/public_htmluser123 $ git pull --rebase Lot of workuser123 $ git submodule init Erroneoususer123 $ git submodule updateuser123 $ rm -rf Data/Temporary/Productionuser123 $ ./flow3 doctrine:migrateuser123 $ ./flow3 cache:warmup
    6. 6. AutomatedDeployment
    7. 7. Possible solutions Bash Phing Ant Script Script ScriptCapistrano ... PHP?
    8. 8. Environments Integration Load-TestingLive Staging Development Development
    9. 9. Requirements Multiple Rollback ExtensibilityEnvironmentsSmoke Tests Clustering ...
    10. 10. Meet
    11. 11. Where‘s the waveContinuousIntegration Surf InfrastructureDevelopment
    12. 12. Ride the wave Surf Repository Your application Deployment SSH Git Code Assets Your ServerConfiguration
    13. 13. Build/Surf/planetflow3.php<?php$workflow = new TYPO3SurfDomainModelSimpleWorkflow();$deployment->setWorkflow($workflow);$application = new TYPO3SurfApplicationFLOW3();$application->setDeploymentPath(/var/www/planetflow3-Integration);$application->setOption(repositoryUrl, git://github.com/chlu/Planetflow3-Distribution.git);$node = new TYPO3SurfDomainModelNode(integration-server);$node->setHostname(planetflow3-integration.example.com);$application->addNode($node); A simple deployment
    14. 14. Running the deployment
    15. 15. Surf ArchitecturePackages Your package Surf Standalone Flow or Included
    16. 16. The Surf Model Deployment EnvironmentsWorkflow Deployment Application Code / Assets Node Node Server
    17. 17. Workflow initialize Create release structure update Code update (e.g. Git) migrate Migration (e.g. Doctrine)Stages finalize Finalize release (cache warmup) test Test release (smoke test) switch Publish release to live state cleanup Cleanup old releases
    18. 18. TasksWorkflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate ... switch Switch Symlinks cleanup Remove Releases
    19. 19. Adding TasksWorkflow Flow Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
    20. 20. Task Taskexecute(...)rollback(...)
    21. 21. RollbackWorkflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
    22. 22. RollbackWorkflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
    23. 23. RollbackWorkflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
    24. 24. The Node viewmyserver1.example.com Apache www.example.com VHosts initialize
    25. 25. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts └── shared initialize
    26. 26. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── next └── shared next.example.com initialize update
    27. 27. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── current └── shared next.example.com initialize update ... switch
    28. 28. The Node view Next releasemyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── current └── shared next.example.com
    29. 29. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── current └── shared next.example.com initialize
    30. 30. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   └── current next.example.com └── shared initialize update
    31. 31. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── current next.example.com │   └── next └── shared initialize update
    32. 32. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── current next.example.com │   └── next └── shared initialize update ...
    33. 33. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── current next.example.com │   └── next └── shared initialize update ... switch
    34. 34. The Node viewmyserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── previous next.example.com │   └── current └── shared initialize update ... switch
    35. 35. Multiple Nodes myserver1 myserver2 myserver3Workflow
    36. 36. Multiple Nodes myserver1 myserver2 myserver3Workflow initialize initialize initialize
    37. 37. Multiple Nodes myserver1 myserver2 myserver3Workflow initialize initialize initialize update update update
    38. 38. Multiple Nodes myserver1 myserver2 myserver3Workflow initialize initialize initialize update update update ... ... ...
    39. 39. Multiple Nodes myserver1 myserver2 myserver3Workflow initialize initialize initialize update update update ... ... ... switch switch switch
    40. 40. Multiple Nodes myserver1 myserver2 myserver3Workflow initialize initialize initialize update update update ... ... ... switch switch switch cleanup cleanup cleanup
    41. 41. Further FeaturesMulti applicationSimulate DeploymentsSmoke testsCustom tasks
    42. 42. Application
    43. 43. Deploying a Flow Application Flow Application Template Create Composer Symlink Directories install Data Migrate ... Doctrine
    44. 44. Application TYPO3
    45. 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. 46. Deploying a TYPO3 CMS Delete files in typo3temp Clear Caches Run Unittests (EXT:phpunit)(all, pages, configuration) Run SQLExecute reports Special Tasks Add (de-)activate Set configuration scheduler tasks Extension UPDATE functionCompare Database ToolRefresh extension list Create sys_news record
    47. 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 recordhttp://forge.typo3.org/projects/show/extension-coreapi
    48. 48. Project DeploymentEXT:coreapi TYPO3 Surf Best Practice ...
    49. 49. Budget application for sprints pending.
    50. 50. Join the discussion on forge.
    51. 51. Additional Sponsoring needed.
    52. 52. Talk to me.
    53. 53. Deploying a TYPO3 CMS TYPO3CMS Application Template Create Symlink ExecuteDirectories Data EXT:coreapi ...
    54. 54. Current StateGit is favoredFlexible update plannedSVN, rsync, TarIn daily use for productionBut in Beta stateStable release in Early 2013
    55. 55. Questions ?

    ×