SlideShare ist ein Scribd-Unternehmen logo
1 von 55
FLOW & TYPO3 Deployment

         with
Christopher Hlubek networkteam.com
     Tobias Liebig etobi.de



Your     Speakers
How to deploy
your code       ?
Manual
Deployment
Manual deployment
# ssh testuser@my-staging-server.example.com
user123 $ cd /var/www/project
user123 $ git pull --rebase
user123 $ git submodule init
user123 $ git submodule update
user123 $ rm -rf Data/Temporary/Production
user123 $ ./flow3 doctrine:migrate
user123 $ ./flow3 cache:warmup

# ssh user123@my-live-server1.example.com
user123 $ cd /home/myproject/public_html
user123 $ git pull --rebase
user123 $ git submodule init
user123 $ git submodule update
user123 $ rm -rf Data/Temporary/Production
user123 $ ./flow3 doctrine:migrate
user123 $ ./flow3 cache:warmup

# ssh user123@my-live-server2.example.com
user123 $ cd /home/myproject/public_html
user123 $ git pull --rebase
                                               Lot of work
user123 $ git submodule init


                                               Erroneous
user123 $ git submodule update
user123 $ rm -rf Data/Temporary/Production
user123 $ ./flow3 doctrine:migrate
user123 $ ./flow3 cache:warmup
Automated
Deployment
Possible solutions

  Bash       Phing     Ant
  Script     Script   Script



Capistrano     ...
                      PHP?
Environments

                 Integration           Load-Testing

Live   Staging

                               Development
                                 Development
Requirements

  Multiple
               Rollback     Extensibility
Environments




Smoke Tests    Clustering        ...
Meet
Where‘s the          wave
Continuous
Integration   Surf     Infrastructure




Development
Ride the           wave
                  Surf             Repository
        Your
  application   Deployment
                             SSH         Git
    Code
   Assets                           Your Server
Configuration
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
Running the deployment
Surf Architecture
Packages




           Your package

               Surf
                          Standalone
            Flow              or
                           Included
The Surf Model
              Deployment               Environments
Workflow

                Deployment




                  Application          Code / Assets


           Node                 Node   Server
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
Tasks
Workflow            Base Application
 initialize   Create Directories


  update      Create Symlinks      Git Checkout


  migrate


    ...


  switch      Switch Symlinks


  cleanup     Remove Releases
Adding Tasks
Workflow             Flow Application
 initialize    Create Directories


  update        Create Symlinks     Git Checkout


  migrate        Flow Migrate


    ...


  switch        Switch Symlinks


  cleanup       Remove Releases
Task

           Task


execute(...)
rollback(...)
Rollback
Workflow            Base Application
 initialize   Create Directories


  update      Create Symlinks      Git Checkout


  migrate       Flow Migrate


    ...


  switch      Switch Symlinks


  cleanup     Remove Releases
Rollback
Workflow            Base Application
 initialize   Create Directories


  update      Create Symlinks      Git Checkout


  migrate       Flow Migrate


    ...


  switch      Switch Symlinks


  cleanup     Remove Releases
Rollback
Workflow            Base Application
 initialize   Create Directories


  update      Create Symlinks      Git Checkout


  migrate       Flow Migrate


    ...


  switch      Switch Symlinks


  cleanup     Remove Releases
The    Node view
myserver1.example.com

               Apache

           www.example.com
 VHosts




  initialize
The    Node view
myserver1.example.com

               Apache          Deployment path
                             ├── cache
           www.example.com   ├── releases
 VHosts




                             └── shared




  initialize
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     └── next
                                 └──   shared
           next.example.com




  initialize            update
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     └── current
                                 └──   shared
           next.example.com




  initialize            update     ...               switch
The       Node view
                                                  Next release
myserver1.example.com

           Apache              Deployment path
                             ├──   cache
          www.example.com    ├──   releases
 VHosts




                             │     ├── 20120101111100
                             │     └── current
                             └──   shared
          next.example.com
The    Node view
myserver1.example.com

               Apache           Deployment path
                              ├──   cache
           www.example.com    ├──   releases
 VHosts




                              │     ├── 20120101111100
                              │     └── current
                              └──   shared
           next.example.com




  initialize
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     ├── 20120102122200
                                 │     └── current
           next.example.com      └──   shared




  initialize            update
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     ├── 20120102122200
                                 │     ├── current
           next.example.com      │     └── next
                                 └──   shared




  initialize            update
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     ├── 20120102122200
                                 │     ├── current
           next.example.com      │     └── next
                                 └──   shared




  initialize            update     ...
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     ├── 20120102122200
                                 │     ├── current
           next.example.com      │     └── next
                                 └──   shared




  initialize            update     ...               switch
The         Node view
myserver1.example.com

               Apache              Deployment path
                                 ├──   cache
           www.example.com       ├──   releases
 VHosts




                                 │     ├── 20120101111100
                                 │     ├── 20120102122200
                                 │     ├── previous
           next.example.com      │     └── current
                                 └──   shared




  initialize            update     ...               switch
Multiple Nodes
           myserver1   myserver2   myserver3
Workflow
Multiple Nodes
           myserver1     myserver2     myserver3
Workflow

            initialize    initialize    initialize
Multiple Nodes
           myserver1     myserver2     myserver3
Workflow

            initialize    initialize    initialize

            update         update        update
Multiple Nodes
           myserver1     myserver2     myserver3
Workflow

            initialize    initialize    initialize

            update         update        update

               ...           ...            ...
Multiple Nodes
           myserver1     myserver2     myserver3
Workflow

            initialize    initialize    initialize

            update         update        update

               ...           ...            ...

             switch        switch        switch
Multiple Nodes
           myserver1     myserver2     myserver3
Workflow

            initialize    initialize    initialize

            update         update        update

               ...           ...            ...

             switch        switch        switch

            cleanup       cleanup       cleanup
Further Features

Multi application
Simulate Deployments
Smoke tests
Custom tasks
Application
Deploying a Flow Application

          Flow Application Template


    Create       Composer         Symlink
  Directories      install         Data



   Migrate
                     ...
   Doctrine
Application


              TYPO3
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
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
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
Project Deployment



EXT: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        Execute
Directories      Data         EXT:coreapi




    ...
Current State
Git is favored
Flexible update planned
SVN, rsync, Tar

In daily use for production
But in Beta state

Stable release in Early 2013
Questions   ?

Weitere ähnliche Inhalte

Was ist angesagt?

Travis CI: Fun and easy CI for your Plone packages
Travis CI: Fun and easy CI for your Plone packagesTravis CI: Fun and easy CI for your Plone packages
Travis CI: Fun and easy CI for your Plone packagesNejc Zupan
 
Python virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesPython virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesLarry Cai
 
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as codeVoxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as codeDamien Duportal
 
Virtualenv
VirtualenvVirtualenv
VirtualenvWEBdeBS
 
Meetup C++ Floripa - Conan.io
Meetup C++ Floripa - Conan.ioMeetup C++ Floripa - Conan.io
Meetup C++ Floripa - Conan.ioUilian Ries
 
CI : the first_step: Auto Testing with CircleCI - (MOSG)
CI : the first_step: Auto Testing with CircleCI - (MOSG)CI : the first_step: Auto Testing with CircleCI - (MOSG)
CI : the first_step: Auto Testing with CircleCI - (MOSG)Soshi Nemoto
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Longericlongtx
 
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the FlowInspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flowmhelmich
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with DockerPatrick Mizer
 
Travis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHPTravis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHPFederico Damián Lozada Mosto
 
Gitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CIGitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CIUilian Ries
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudSalesforce Developers
 
DevOps: Cooking Drupal Deployment
DevOps: Cooking Drupal DeploymentDevOps: Cooking Drupal Deployment
DevOps: Cooking Drupal DeploymentGerald Villorente
 
[MeetUp][2nd] 컭on턺
[MeetUp][2nd] 컭on턺[MeetUp][2nd] 컭on턺
[MeetUp][2nd] 컭on턺InfraEngineer
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90minsLarry Cai
 
Do you know all of Puppet?
Do you know all of Puppet?Do you know all of Puppet?
Do you know all of Puppet?Julien Pivotto
 

Was ist angesagt? (20)

Travis CI: Fun and easy CI for your Plone packages
Travis CI: Fun and easy CI for your Plone packagesTravis CI: Fun and easy CI for your Plone packages
Travis CI: Fun and easy CI for your Plone packages
 
Python virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesPython virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutes
 
GlassFish Embedded API
GlassFish Embedded APIGlassFish Embedded API
GlassFish Embedded API
 
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as codeVoxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
 
Virtualenv
VirtualenvVirtualenv
Virtualenv
 
F3X12 FLOW3 Project Lifecycle
F3X12 FLOW3 Project LifecycleF3X12 FLOW3 Project Lifecycle
F3X12 FLOW3 Project Lifecycle
 
Meetup C++ Floripa - Conan.io
Meetup C++ Floripa - Conan.ioMeetup C++ Floripa - Conan.io
Meetup C++ Floripa - Conan.io
 
Travis CI
Travis CITravis CI
Travis CI
 
CI : the first_step: Auto Testing with CircleCI - (MOSG)
CI : the first_step: Auto Testing with CircleCI - (MOSG)CI : the first_step: Auto Testing with CircleCI - (MOSG)
CI : the first_step: Auto Testing with CircleCI - (MOSG)
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
 
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the FlowInspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with Docker
 
Vagrant and CentOS 7
Vagrant and CentOS 7Vagrant and CentOS 7
Vagrant and CentOS 7
 
Travis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHPTravis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHP
 
Gitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CIGitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CI
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the Cloud
 
DevOps: Cooking Drupal Deployment
DevOps: Cooking Drupal DeploymentDevOps: Cooking Drupal Deployment
DevOps: Cooking Drupal Deployment
 
[MeetUp][2nd] 컭on턺
[MeetUp][2nd] 컭on턺[MeetUp][2nd] 컭on턺
[MeetUp][2nd] 컭on턺
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90mins
 
Do you know all of Puppet?
Do you know all of Puppet?Do you know all of Puppet?
Do you know all of Puppet?
 

Andere mochten auch

TYPO3 Flow and the Joy of Development (FOSDEM 2013)
TYPO3 Flow and the Joy of Development (FOSDEM 2013)TYPO3 Flow and the Joy of Development (FOSDEM 2013)
TYPO3 Flow and the Joy of Development (FOSDEM 2013)Robert Lemke
 
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 FlowT3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flowmhelmich
 
TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013die.agilen GmbH
 
TYPO3 Flow 2.0 (International PHP Conference 2013)
TYPO3 Flow 2.0 (International PHP Conference 2013)TYPO3 Flow 2.0 (International PHP Conference 2013)
TYPO3 Flow 2.0 (International PHP Conference 2013)Robert Lemke
 
TYPO3 Flow a solid foundation for medialib.tv
TYPO3 Flow a solid foundation for medialib.tvTYPO3 Flow a solid foundation for medialib.tv
TYPO3 Flow a solid foundation for medialib.tvdfeyer
 
TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13Robert Lemke
 
TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)
TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)
TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)Robert Lemke
 
TYPO3 5.0 Experience Concept
TYPO3 5.0 Experience ConceptTYPO3 5.0 Experience Concept
TYPO3 5.0 Experience ConceptJens Hoffmann
 
TYPO3 Flow - PHP Framework for Developer Happiness
TYPO3 Flow - PHP Framework for Developer HappinessTYPO3 Flow - PHP Framework for Developer Happiness
TYPO3 Flow - PHP Framework for Developer HappinessChristian Müller
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatMarkus Goldbeck
 
TYPO3 Neos - past, present and future (T3CON14EU)
TYPO3 Neos - past, present and future (T3CON14EU)TYPO3 Neos - past, present and future (T3CON14EU)
TYPO3 Neos - past, present and future (T3CON14EU)Robert Lemke
 
Using Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowUsing Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowKarsten Dambekalns
 

Andere mochten auch (12)

TYPO3 Flow and the Joy of Development (FOSDEM 2013)
TYPO3 Flow and the Joy of Development (FOSDEM 2013)TYPO3 Flow and the Joy of Development (FOSDEM 2013)
TYPO3 Flow and the Joy of Development (FOSDEM 2013)
 
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 FlowT3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
 
TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013
 
TYPO3 Flow 2.0 (International PHP Conference 2013)
TYPO3 Flow 2.0 (International PHP Conference 2013)TYPO3 Flow 2.0 (International PHP Conference 2013)
TYPO3 Flow 2.0 (International PHP Conference 2013)
 
TYPO3 Flow a solid foundation for medialib.tv
TYPO3 Flow a solid foundation for medialib.tvTYPO3 Flow a solid foundation for medialib.tv
TYPO3 Flow a solid foundation for medialib.tv
 
TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13
 
TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)
TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)
TYPO3 Flow: Beyond the Blog Example (Inspiring Flow 2013)
 
TYPO3 5.0 Experience Concept
TYPO3 5.0 Experience ConceptTYPO3 5.0 Experience Concept
TYPO3 5.0 Experience Concept
 
TYPO3 Flow - PHP Framework for Developer Happiness
TYPO3 Flow - PHP Framework for Developer HappinessTYPO3 Flow - PHP Framework for Developer Happiness
TYPO3 Flow - PHP Framework for Developer Happiness
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with Behat
 
TYPO3 Neos - past, present and future (T3CON14EU)
TYPO3 Neos - past, present and future (T3CON14EU)TYPO3 Neos - past, present and future (T3CON14EU)
TYPO3 Neos - past, present and future (T3CON14EU)
 
Using Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowUsing Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 Flow
 

Ähnlich wie T3CON12 Flow and TYPO3 deployment with surf

The future of the php development environment
The future of the php development environmentThe future of the php development environment
The future of the php development environmentJeremy Quinton
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Open Source tools overview
Open Source tools overviewOpen Source tools overview
Open Source tools overviewLuciano Resende
 
Head First to Container&Kubernetes
Head First to Container&KubernetesHead First to Container&Kubernetes
Head First to Container&KubernetesHungWei Chiu
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and dockerFabio Fumarola
 
Omaha (Google Update) server
Omaha (Google Update) serverOmaha (Google Update) server
Omaha (Google Update) serverDmitry Lyfar
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and DockerFabio Fumarola
 
Node.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechNode.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechChristopher Bumgardner
 
Everyday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsEveryday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsNikolay Stoitsev
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and dockerFabio Fumarola
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersLEDC 2016
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchelldpc
 
4. open mano set up and usage
4. open mano set up and usage4. open mano set up and usage
4. open mano set up and usagevideos
 
Zero downtime deployments with laravel envoy
Zero downtime deployments with laravel envoyZero downtime deployments with laravel envoy
Zero downtime deployments with laravel envoyTung Nguyen
 
Docker Multi Host Networking, Rachit Arora, IBM
Docker Multi Host Networking, Rachit Arora, IBMDocker Multi Host Networking, Rachit Arora, IBM
Docker Multi Host Networking, Rachit Arora, IBMNeependra Khare
 
PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVNLorna Mitchell
 
WordPress Development Environments
WordPress Development Environments WordPress Development Environments
WordPress Development Environments Ohad Raz
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnishschoefmax
 
Java Builds with Maven and Ant
Java Builds with Maven and AntJava Builds with Maven and Ant
Java Builds with Maven and AntDavid Noble
 
Containing the world with Docker
Containing the world with DockerContaining the world with Docker
Containing the world with DockerGiuseppe Piccolo
 

Ähnlich wie T3CON12 Flow and TYPO3 deployment with surf (20)

The future of the php development environment
The future of the php development environmentThe future of the php development environment
The future of the php development environment
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Open Source tools overview
Open Source tools overviewOpen Source tools overview
Open Source tools overview
 
Head First to Container&Kubernetes
Head First to Container&KubernetesHead First to Container&Kubernetes
Head First to Container&Kubernetes
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and docker
 
Omaha (Google Update) server
Omaha (Google Update) serverOmaha (Google Update) server
Omaha (Google Update) server
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Node.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechNode.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ Benetech
 
Everyday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsEveryday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.js
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and docker
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchell
 
4. open mano set up and usage
4. open mano set up and usage4. open mano set up and usage
4. open mano set up and usage
 
Zero downtime deployments with laravel envoy
Zero downtime deployments with laravel envoyZero downtime deployments with laravel envoy
Zero downtime deployments with laravel envoy
 
Docker Multi Host Networking, Rachit Arora, IBM
Docker Multi Host Networking, Rachit Arora, IBMDocker Multi Host Networking, Rachit Arora, IBM
Docker Multi Host Networking, Rachit Arora, IBM
 
PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVN
 
WordPress Development Environments
WordPress Development Environments WordPress Development Environments
WordPress Development Environments
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
 
Java Builds with Maven and Ant
Java Builds with Maven and AntJava Builds with Maven and Ant
Java Builds with Maven and Ant
 
Containing the world with Docker
Containing the world with DockerContaining the world with Docker
Containing the world with Docker
 

Kürzlich hochgeladen

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Kürzlich hochgeladen (20)

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

T3CON12 Flow and TYPO3 deployment with surf

  • 1. FLOW & TYPO3 Deployment with
  • 2. Christopher Hlubek networkteam.com Tobias Liebig etobi.de Your Speakers
  • 5. Manual deployment # ssh testuser@my-staging-server.example.com user123 $ cd /var/www/project user123 $ git pull --rebase user123 $ git submodule init user123 $ git submodule update user123 $ rm -rf Data/Temporary/Production user123 $ ./flow3 doctrine:migrate user123 $ ./flow3 cache:warmup # ssh user123@my-live-server1.example.com user123 $ cd /home/myproject/public_html user123 $ git pull --rebase user123 $ git submodule init user123 $ git submodule update user123 $ rm -rf Data/Temporary/Production user123 $ ./flow3 doctrine:migrate user123 $ ./flow3 cache:warmup # ssh user123@my-live-server2.example.com user123 $ cd /home/myproject/public_html user123 $ git pull --rebase Lot of work user123 $ git submodule init Erroneous user123 $ git submodule update user123 $ rm -rf Data/Temporary/Production user123 $ ./flow3 doctrine:migrate user123 $ ./flow3 cache:warmup
  • 7. Possible solutions Bash Phing Ant Script Script Script Capistrano ... PHP?
  • 8. Environments Integration Load-Testing Live Staging Development Development
  • 9. Requirements Multiple Rollback Extensibility Environments Smoke Tests Clustering ...
  • 10. Meet
  • 11. Where‘s the wave Continuous Integration Surf Infrastructure Development
  • 12. Ride the wave Surf Repository Your application Deployment SSH Git Code Assets Your Server Configuration
  • 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
  • 15. Surf Architecture Packages Your package Surf Standalone Flow or Included
  • 16. The Surf Model Deployment Environments Workflow Deployment Application Code / Assets Node Node Server
  • 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. Tasks Workflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate ... switch Switch Symlinks cleanup Remove Releases
  • 19. Adding Tasks Workflow Flow Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
  • 20. Task Task execute(...) rollback(...)
  • 21. Rollback Workflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
  • 22. Rollback Workflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
  • 23. Rollback Workflow Base Application initialize Create Directories update Create Symlinks Git Checkout migrate Flow Migrate ... switch Switch Symlinks cleanup Remove Releases
  • 24. The Node view myserver1.example.com Apache www.example.com VHosts initialize
  • 25. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts └── shared initialize
  • 26. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── next └── shared next.example.com initialize update
  • 27. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── current └── shared next.example.com initialize update ... switch
  • 28. The Node view Next release myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── current └── shared next.example.com
  • 29. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   └── current └── shared next.example.com initialize
  • 30. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   └── current next.example.com └── shared initialize update
  • 31. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── current next.example.com │   └── next └── shared initialize update
  • 32. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── current next.example.com │   └── next └── shared initialize update ...
  • 33. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── current next.example.com │   └── next └── shared initialize update ... switch
  • 34. The Node view myserver1.example.com Apache Deployment path ├── cache www.example.com ├── releases VHosts │   ├── 20120101111100 │   ├── 20120102122200 │   ├── previous next.example.com │   └── current └── shared initialize update ... switch
  • 35. Multiple Nodes myserver1 myserver2 myserver3 Workflow
  • 36. Multiple Nodes myserver1 myserver2 myserver3 Workflow initialize initialize initialize
  • 37. Multiple Nodes myserver1 myserver2 myserver3 Workflow initialize initialize initialize update update update
  • 38. Multiple Nodes myserver1 myserver2 myserver3 Workflow initialize initialize initialize update update update ... ... ...
  • 39. Multiple Nodes myserver1 myserver2 myserver3 Workflow initialize initialize initialize update update update ... ... ... switch switch switch
  • 40. Multiple Nodes myserver1 myserver2 myserver3 Workflow initialize initialize initialize update update update ... ... ... switch switch switch cleanup cleanup cleanup
  • 41. Further Features Multi application Simulate Deployments Smoke tests Custom tasks
  • 43. Deploying a Flow Application Flow Application Template Create Composer Symlink Directories install Data Migrate ... Doctrine
  • 44. Application TYPO3
  • 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
  • 48. Project Deployment EXT:coreapi TYPO3 Surf Best Practice ...
  • 49. Budget application for sprints pending.
  • 50. Join the discussion on forge.
  • 53. Deploying a TYPO3 CMS TYPO3CMS Application Template Create Symlink Execute Directories Data EXT:coreapi ...
  • 54. Current State Git is favored Flexible update planned SVN, rsync, Tar In daily use for production But in Beta state Stable release in Early 2013

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. 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
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. Story initial Kickoff\n
  24. Story initial Kickoff\n
  25. Story initial Kickoff\n
  26. Story initial Kickoff\n
  27. Story initial Kickoff\n
  28. Story initial Kickoff\n
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. Declarative but scriptable\n
  55. Declarative but scriptable\n
  56. Declarative but scriptable\n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. Base application is basic template\n
  86. Base application is basic template\n
  87. Base application is basic template\n
  88. Base application is basic template\n
  89. Base application is basic template\n
  90. Base application is basic template\n
  91. Base application is basic template\n
  92. Base application is basic template\n
  93. Base application is basic template\n
  94. Base application is basic template\n
  95. Base application is basic template\n
  96. Base application is basic template\n
  97. Base application is basic template\n
  98. Base application is basic template\n
  99. Base application is basic template\n
  100. Base application is basic template\n
  101. Base application is basic template\n
  102. Flow application is predefined for Flow\nTasks can be added to stages\nOr insert before or after other tasks\n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. * the node\n* apache webserver\n* several virtual hosts\n
  129. * the node\n* apache webserver\n* several virtual hosts\n
  130. * the node\n* apache webserver\n* several virtual hosts\n
  131. * the node\n* apache webserver\n* several virtual hosts\n
  132. * the node\n* apache webserver\n* several virtual hosts\n
  133. * run deployment\n* initialize create directories\n
  134. * run deployment\n* initialize create directories\n
  135. * update checks out the code\n* next points to the next release\n
  136. * switch\n* current points to the latest release\n* next is removed after deployment\n
  137. * switch\n* current points to the latest release\n* next is removed after deployment\n
  138. * switch\n* current points to the latest release\n* next is removed after deployment\n
  139. * switch\n* current points to the latest release\n* next is removed after deployment\n
  140. * next day, another release\n* current points to yesterdays release\n
  141. * initialize don&amp;#x2018;t need to do anything\n
  142. * update checks out the new release\n* current still points to yesterdays release\n
  143. * next points to the next release\n* running tests on next\n
  144. * next points to the next release\n* running tests on next\n
  145. * everything is fine\n* current point to the new release\n* previous points to yesterdays release\n* next removed\n
  146. * everything is fine\n* current point to the new release\n* previous points to yesterdays release\n* next removed\n
  147. stages executed one after the other on each host\n
  148. stages executed one after the other on each host\n
  149. stages executed one after the other on each host\n
  150. stages executed one after the other on each host\n
  151. stages executed one after the other on each host\n
  152. stages executed one after the other on each host\n
  153. stages executed one after the other on each host\n
  154. stages executed one after the other on each host\n
  155. stages executed one after the other on each host\n
  156. stages executed one after the other on each host\n
  157. stages executed one after the other on each host\n
  158. stages executed one after the other on each host\n
  159. stages executed one after the other on each host\n
  160. stages executed one after the other on each host\n
  161. stages executed one after the other on each host\n
  162. stages executed one after the other on each host\n
  163. stages executed one after the other on each host\n
  164. stages executed one after the other on each host\n
  165. \n
  166. \n
  167. \n
  168. \n
  169. \n
  170. \n
  171. Tasks can be added to stages\nInsert before or after other tasks\n
  172. Tasks can be added to stages\nInsert before or after other tasks\n
  173. Tasks can be added to stages\nInsert before or after other tasks\n
  174. Tasks can be added to stages\nInsert before or after other tasks\n
  175. Tasks can be added to stages\nInsert before or after other tasks\n
  176. Tasks can be added to stages\nInsert before or after other tasks\n
  177. \n
  178. * 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
  179. * 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
  180. * 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
  181. * 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
  182. * 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
  183. * 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
  184. * 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
  185. * 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
  186. * 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
  187. * 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
  188. * 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
  189. * 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
  190. * 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
  191. * 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
  192. * 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
  193. * 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
  194. * 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
  195. * 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
  196. * 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
  197. * 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
  198. 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
  199. 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
  200. 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
  201. 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
  202. \n
  203. \n
  204. \n
  205. \n
  206. \n
  207. * back to Surf\n* Application for TYPO3CMS\n
  208. * back to Surf\n* Application for TYPO3CMS\n
  209. * back to Surf\n* Application for TYPO3CMS\n
  210. * back to Surf\n* Application for TYPO3CMS\n
  211. * back to Surf\n* Application for TYPO3CMS\n
  212. \n
  213. \n
  214. \n
  215. \n
  216. \n
  217. \n