SlideShare a Scribd company logo
1 of 73
Download to read offline
rock-solid TYPO3 development
with continuous integration
and deployment
TYPO3Camp PL - 2013.11
Sonntag, 20. Oktober 13
@

eiv
oll
t

Tolleiv
Nietsch
Senior Developer at

Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
agenda
Sonntag, 20. Oktober 13
disclaimer
Sonntag, 20. Oktober 13
tools

disclaimer
Sonntag, 20. Oktober 13
tools

priorities

Sonntag, 20. Oktober 13

disclaimer
tools

disclaimer

priorities

details

Sonntag, 20. Oktober 13
tools

disclaimer

priorities

details

Sonntag, 20. Oktober 13

NIH
the big picture
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13

Unit Tests
Version Control

Sonntag, 20. Oktober 13

Unit Tests
Unit Tests

Sonntag, 20. Oktober 13

Build
Unit Tests

Sonntag, 20. Oktober 13

Build
Build

Sonntag, 20. Oktober 13

Install on
“Integration”
Build

Sonntag, 20. Oktober 13

Install on
“Integration”
Install on
“Integration”

Sonntag, 20. Oktober 13

Integration Tests
Install on
“Integration”

Sonntag, 20. Oktober 13

Integration Tests
Integration Tests

Sonntag, 20. Oktober 13

Install on
„Staging“
Integration Tests

Sonntag, 20. Oktober 13

Install on
„Staging“
Integration Tests

Sonntag, 20. Oktober 13

Install on
„Staging“
Install on
„Staging“

Sonntag, 20. Oktober 13

Install on
„Production“
too simple?
Sonntag, 20. Oktober 13
challenges
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
unique
dev environment
Sonntag, 20. Oktober 13
Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13
Version Control

PHP lint

Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13
Version Control

Sonntag, 20. Oktober 13

Code Reviews
Version Control

Code Reviews

„ The Unexpected Outcomes Of
Code Review“ [6]
Sonntag, 20. Oktober 13
Code Reviews

Unit Tests

standalone extension tests see @helhum [2] / @tolleiv [3]
Sonntag, 20. Oktober 13
Files
DB

Unit Tests

Build
Installer
Settings

Sonntag, 20. Oktober 13
.tar.gz
“virtual
package” (revision)

minify js/css
Jenkins
Unit Tests

Build

grunt
composer

Sonntag, 20. Oktober 13
Build

Analyse

TYPO3 Coding Standards Project [1]

Sonntag, 20. Oktober 13
fragile

Analyse

Install on
“Integration”

shared dev
server

Sonntag, 20. Oktober 13
Install on
“Integration”

Sonntag, 20. Oktober 13

Unittests
Unittests

Integration Tests

Cucumber /
Behat

Sonntag, 20. Oktober 13

*Spec
Selenium
Apache Jmeter

Install on
“Staging”

Integration Tests
✔
✔
✔

Sonntag, 20. Oktober 13
Green / blue
deployments

Install on
“Staging”

Sonntag, 20. Oktober 13

Install on
„Production“
Green / blue
deployments

Install on
“Staging”

Install on
„Production“

Zero Downtime

Sonntag, 20. Oktober 13
Green / blue
deployments

Install on
“Staging”

Install on
„Production“

Zero Downtime

Sonntag, 20. Oktober 13

Plan B:
rollback
Green / blue
deployments

Install on
“Staging”

Plan B:
rollback

Install on
„Production“

Zero Downtime
Green/blue
big scale
Sonntag, 20. Oktober 13
Install on
“Staging”

Sonntag, 20. Oktober 13

Install on
„Production“
....
Sonntag, 20. Oktober 13
pipeline visualization
for team dashboards
Build

#280

Sonntag, 20. Oktober 13

Static Code
Analysis

Install on
“Integration”

Unit
Tests

Integration
Tests

Acceptance
Tests
pipeline visualization
for team dashboards
Build

#281
#280

Sonntag, 20. Oktober 13

Static Code
Analysis

Install on
“Integration”

Unit
Tests

Integration
Tests

Acceptance
Tests
pipeline visualization
for team dashboards
Build

#282
#281
#280

Sonntag, 20. Oktober 13

Static Code
Analysis

Install on
“Integration”

Unit
Tests

Integration
Tests

Acceptance
Tests
pipeline visualization
for team dashboards
Build

#283
#282
#281
#280

Sonntag, 20. Oktober 13

Static Code
Analysis

Install on
“Integration”

Unit
Tests

Integration
Tests

Acceptance
Tests
pipeline visualization
for team dashboards
Build

#284
#283
#282
#281
#280

Sonntag, 20. Oktober 13

Static Code
Analysis

Install on
“Integration”

Unit
Tests

Integration
Tests

Acceptance
Tests
pipeline visualization
for team dashboards
Build
#285
#284
#283
#282
#281
#280

Sonntag, 20. Oktober 13

Static Code
Analysis

Install on
“Integration”

Unit
Tests

Integration
Tests

Acceptance
Tests
Integration

Staging

Sandbox

Production A

Sonntag, 20. Oktober 13

Devbox

Production B
EnvSettingTool

Sonntag, 20. Oktober 13
deployment

feature release
Sonntag, 20. Oktober 13
TestPyramid
Martin Fowler:
Test Pyramid [9]

Sonntag, 20. Oktober 13
TestPyramid
Martin Fowler:
Test Pyramid [9]

Sonntag, 20. Oktober 13
test plans
✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

✔

Sonntag, 20. Oktober 13

✔
✔

✔

✔
full stack
knowledge

Sonntag, 20. Oktober 13
full stack
debugging

Sonntag, 20. Oktober 13
DevOps, yeah!

Sonntag, 20. Oktober 13
startup time

Sonntag, 20. Oktober 13
knowledge sharing
hackathons

mentoring
developers
meetings

Sonntag, 20. Oktober 13

job chicken
read on

[1] TYPO3 Coding Standards Project

http://forge.typo3.org/projects/team-php_codesniffer/wiki/Using_the_TYPO3_Coding_Standard

[2] @helhum - standalone extension tests

http://typo3.helmut-hummel.de/post/63972451370/executing-typo3-cms-unit-test-tests-in-phpstorm

[3] @tolleiv - standalone unit tests
https://github.com/tolleiv/typo3-ext-ci

[4] Capistrano on Github
https://github.com/capistrano/capistrano

[6] The Unexpected Outcomes Of Code Review
http://blog.codeclimate.com/blog/2013/10/09/unexpected-outcomes-of-code-reviews/

[7] EnvSettingTool on Github
https://github.com/AOEmedia/EnvSettingsTool

[8] Performance Measurement and Tuning
http://www.slideshare.net/aoemedia/performance-measurement-and-tuning

[9] Martin Fowler: Test Pyramid
http://martinfowler.com/bliki/TestPyramid.html

http://www.slideshare.net/aoemedia/

[10] EasyDeployWorkflows
https://github.com/AOEmedia/EasyDeployWorkflows

[11] EXT:coreapi on Github
https://github.com/etobi/ext-coreapi

Sonntag, 20. Oktober 13
Thank you!
Any questions?
www.aoemedia.com
@aoepeople
www.tolleiv.de
@tolleiv
Sonntag, 20. Oktober 13

More Related Content

More from AOE

Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19AOE
 
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019AOE
 
Flamingo presentation at code.talks commerce by Daniel Pötzinger
Flamingo presentation at code.talks commerce by Daniel PötzingerFlamingo presentation at code.talks commerce by Daniel Pötzinger
Flamingo presentation at code.talks commerce by Daniel PötzingerAOE
 
A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018AOE
 
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...AOE
 
Frankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case StudyFrankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case StudyAOE
 
This is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOEThis is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOEAOE
 
AOEconf17: Application Security
AOEconf17: Application SecurityAOEconf17: Application Security
AOEconf17: Application SecurityAOE
 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOE
 
AOEconf17: A flight through our OM³ Systems
AOEconf17: A flight through our OM³ SystemsAOEconf17: A flight through our OM³ Systems
AOEconf17: A flight through our OM³ SystemsAOE
 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOE
 
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...AOE
 
AOEconf17: Agile scaling concepts
AOEconf17: Agile scaling conceptsAOEconf17: Agile scaling concepts
AOEconf17: Agile scaling conceptsAOE
 
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...AOE
 
AOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice worldAOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice worldAOE
 
AOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian IkeAOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian IkeAOE
 
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...AOE
 
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan RotschAOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan RotschAOE
 
Joern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisationJoern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisationAOE
 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...AOE
 

More from AOE (20)

Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19
 
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
 
Flamingo presentation at code.talks commerce by Daniel Pötzinger
Flamingo presentation at code.talks commerce by Daniel PötzingerFlamingo presentation at code.talks commerce by Daniel Pötzinger
Flamingo presentation at code.talks commerce by Daniel Pötzinger
 
A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018
 
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
 
Frankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case StudyFrankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case Study
 
This is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOEThis is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOE
 
AOEconf17: Application Security
AOEconf17: Application SecurityAOEconf17: Application Security
AOEconf17: Application Security
 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar Insights
 
AOEconf17: A flight through our OM³ Systems
AOEconf17: A flight through our OM³ SystemsAOEconf17: A flight through our OM³ Systems
AOEconf17: A flight through our OM³ Systems
 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar Insights
 
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
 
AOEconf17: Agile scaling concepts
AOEconf17: Agile scaling conceptsAOEconf17: Agile scaling concepts
AOEconf17: Agile scaling concepts
 
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
 
AOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice worldAOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice world
 
AOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian IkeAOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian Ike
 
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
 
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan RotschAOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
 
Joern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisationJoern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisation
 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
 

rock-solid TYPO3 development with continuous integration and deployment