Slide 1

Slide 1 text

Scalable

Slide 2

Slide 2 text

YOUR SPEAKER Martin

Slide 3

Slide 3 text

LAST

Slide 4

Slide 4 text

Software

Slide 5

Slide 5 text

Manual

Slide 6

Slide 6 text

COMMON

Slide 7

Slide 7 text

martin@mybox:~ > ssh myserver.de martin@myserver:~ > cd my_app martin@myserver:~/my_app > git fetch origin martin@myserver:~/my_app > git reset --hard origin/master martin@myserver:~/my_app > git submodule update --init martin@myserver:~/my_app > ./flow doctrine:migrate martin@myserver:~/my_app > ./flow cache:flush Manual

Slide 8

Slide 8 text

martin@mybox:~ > ssh myserver.de martin@myserver:~ > cd my_app martin@myserver:~/my_app > git fetch origin martin@myserver:~/my_app > git reset --hard origin/master martin@myserver:~/my_app > git submodule update --init martin@myserver:~/my_app > ./flow doctrine:migrate martin@myserver:~/my_app > ./flow cache:flush VERSION

Slide 9

Slide 9 text

HERE:

Slide 10

Slide 10 text

HERE:

Slide 11

Slide 11 text

TYPO3

Slide 12

Slide 12 text

TYPO3

Slide 13

Slide 13 text

├── cache │ └── localgitclone ├── releases │ ├── 20130324175345 │ └── current -> ./20130324175345 └── shared BEFORE ├── cache │ └── localgitclone ├── releases │ ├── 20130324175345 │ ├── 20130329184503 │ ├── previous -> ./20130324175345 │ └── current -> ./20130329184503 └── shared AFTER TYPO3

Slide 14

Slide 14 text

TYPO3

Slide 15

Slide 15 text

Install

Slide 16

Slide 16 text

INITIALIZE UPDATE MIGRATE FINALIZE TEST SWITCH CLEANUP SURF

Slide 17

Slide 17 text

Use

Slide 18

Slide 18 text

JENKINS Main Build Deployment Build Auxiliary Build TYPO3

Slide 19

Slide 19 text

Use

Slide 20

Slide 20 text

INITIALIZE

Slide 21

Slide 21 text

N2 N3 N4 N1 N2 N3 N4 INIT

Slide 22

Slide 22 text

Execute

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

setWorkflow($workflow); $deployment->addApplication($application); if (getenv('BUILD_TARGET') !== FALSE) { $node = new TYPO3\Surf\Domain\Model\Node('node-' . getenv('BUILD_TARGET')); $node->setHostname(getenv('BUILD_TARGET')); $node->setOptions(array( 'username' => 'surf' )); $application->addNode($node); } else { foreach (array('www01','www02','www03') as $node) { $node = new TYPO3\Surf\Domain\Model\Node('node-' . $node); $node->setHostname($node); $node->setOptions(array( 'username' => 'surf' )); $application->addNode($node); } }

Slide 26

Slide 26 text

setWorkflow($workflow); $deployment->addApplication($application); if (getenv('BUILD_TARGET') !== FALSE) { $node = new TYPO3\Surf\Domain\Model\Node('node-' . getenv('BUILD_TARGET')); $node->setHostname(getenv('BUILD_TARGET')); $node->setOptions(array( 'username' => 'surf' )); $application->addNode($node); } else { foreach (array('www01','www02','www03') as $node) { $node = new TYPO3\Surf\Domain\Model\Node('node-' . $node); $node->setHostname($node); $node->setOptions(array( 'username' => 'surf' )); $application->addNode($node); } }

Slide 27

Slide 27 text

setWorkflow($workflow); $deployment->addApplication($application); if (getenv('BUILD_TARGET') !== FALSE) { $node = new TYPO3\Surf\Domain\Model\Node('node-' . getenv('BUILD_TARGET')); $node->setHostname(getenv('BUILD_TARGET')); $node->setOptions(array( 'username' => 'surf' )); $application->addNode($node); } else { foreach (array('www01','www02','www03') as $node) { $node = new TYPO3\Surf\Domain\Model\Node('node-' . $node); $node->setHostname($node); $node->setOptions(array( 'username' => 'surf' )); $application->addNode($node); } }

Slide 28

Slide 28 text

Deployment Build Deploy

Slide 29

Slide 29 text

Deployment Build Deploy

Slide 30

Slide 30 text

„Update“ Build N1 N2 N3 N4 ON

Slide 31

Slide 31 text

Use

Slide 32

Slide 32 text

Use

Slide 33

Slide 33 text

Use

Slide 34

Slide 34 text

GIT PRIMARY GIT 2NDARY GERRIT JENKINS MASTER-1 JENKINS MASTER-2 BUILD NODES BUILD NODES DEV DEV INT DEV DEV QA DEV DEV LIVE TYPO3 SURF TYPO3 SURF Deployment

Slide 35

Slide 35 text

TYPO3

Slide 36

Slide 36 text

TYPO3

Slide 37

Slide 37 text

TYPO3

Slide 38

Slide 38 text

USEFUL

Slide 39

Slide 39 text

•http://jenkins-ci.org •http://forge.typo3.org/projects/package-typo3-surf •http://git-scm.org •https://github.com/martin-helmich/ant-typo3flow •https://github.com/martin-helmich/jenkins-typo3surf- plugin •http://etobi.de/blog/2012/05/deployment-setup-typo3-surf/ •http://de.slideshare.net/etobide/t3con12-flow-and-typo3- deployment-with-surf •https://git.typo3.org/FLOW3/Packages/TYPO3.Surf.git/blob/ master:/Documentation/Guide/Index.rst •Duvall,

Slide 40

Slide 40 text

Questions ?

Slide 41

Slide 41 text

Image

Slide 42

Slide 42 text

Image