SlideShare ist ein Scribd-Unternehmen logo
1 von 66
A complete TYPO3.Flow
                             Development
                                 and
                         Deployment Pipeline



                          Thomas Layh @ Inspiring Flow 2013
Samstag, 20. April 13
Samstag, 20. April 13
Samstag, 20. April 13
About me
                            Thomas Layh
                            AOE media GmbH
                            TYPO3 Developer


                                              Fields of interest:
                                                 TYPO3
                                                 TYPO3.Flow
                                                 Automated testing
                                                 Android


Samstag, 20. April 13
The Projects


                                external systems




Samstag, 20. April 13
Samstag, 20. April 13
Part 1: Development



Samstag, 20. April 13
Overview




                        Development   Continuous Delivery   Deployment




Samstag, 20. April 13
The Developer
                        What does a developer need to be happy?


                                          short ramp up time


                              fast development system


                                    development environment with full access




Samstag, 20. April 13
Development System - fast ramp up time




                                 Ask your IT for a new development environment
                                 Wait until it is finished
                                 Buy a new development server if required
                                 Grant access to the developer for the project




Samstag, 20. April 13
Development System - fast development server




Samstag, 20. April 13
Development System - fast development server



                                             t 4            t 8
                                          j ec          j ec
                                      Pro           Pro
                                                3               7
                                          je ct         je ct
                                      Pro           Pro
                                             ct
                                                2
                                                           ec t6
                                        ro je          oj
                                      P             Pr
                                                1               5
                                          je ct           je ct
                                      P ro          P ro




Samstag, 20. April 13
Development System - full access


                                 I want              I want
                                change              stability




                        Dev                                     Op


Samstag, 20. April 13
Vagrant




                           +   ||




Samstag, 20. April 13
Vagrant - Complicated setup (Windows)



                        Install Git
                        Install Ruby
                        Install Rubygems
                        Install Vagrant
                        ....




Samstag, 20. April 13
Vagrant - Complicated setup (Windows)



                        Install Git             Install Vagrant
                        Install Ruby
                        Install Rubygems
                        Install Vagrant
                        ....




Samstag, 20. April 13
Vagrant - Ramp up time

                        Install Vagrant
                        $ git clone aoe_cookbook
                        $ PROJECT=myProject vagrant up




Samstag, 20. April 13
Vagrant - Ramp up time

                        Install Vagrant
                        $ git clone aoe_cookbook
                        $ PROJECT=myProject vagrant up


                                                         Enter the commands
                                                         Get a coffee
                                                         Start working




Samstag, 20. April 13
Vagrant - add some (custom) config and colors


                          .gitconfig
                          .gitcommit-template
                          .bashrc
                          .vimrc
                          .zshrc




Samstag, 20. April 13
Vagrant - add some (custom) config and colors


                          .gitconfig                                                m
                                                                                te
                          .gitcommit-template                                sys
                                                                         ost
                          .bashrc                                  r   h
                                                                ou
                          .vimrc                               y
                                                         li ke
                          .zshrc                  e ls
                                                Fe




Samstag, 20. April 13
Vagrant - Cookbooks

                           http://community.opscode.com/cookbooks

                                  apache
                                  mysql
                                  php
                                  composer
                                  .......




Samstag, 20. April 13
Vagrant - Reusing Cookbooks



                              AOE PHP Cookbook



                             PHP Cookbook




Samstag, 20. April 13
Vagrant - Performance




Samstag, 20. April 13
Vagrant - Performance




                                         Your Project




Samstag, 20. April 13
Vagrant - Performance




Samstag, 20. April 13
Vagrant - full access


                        No need to ask the IT
                        Try out some fancy new stuff
                        Destroyed the server? vagrant destroy / vagrant up
                        Add a recipe and it is documented




Samstag, 20. April 13
Vagrant - different Platforms

                        Runs on:




                                                 http://downloads.vagrantup.com/




Samstag, 20. April 13
Vagrant - TYPO3 Server Team

                        ....and some less important sites.




Samstag, 20. April 13
Samstag, 20. April 13
Part 2: Continuous Delivery



Samstag, 20. April 13
Overview




                                      Continuous
                        Development                Deployment
                                       Delivery




Samstag, 20. April 13
Components




Samstag, 20. April 13
Components




                              TYPO3.Surf




Samstag, 20. April 13
Overview


                                            Installation Package
                                                                                      e nt
                                                                    QA            loym
                                                                                p
                                                                              De
                                      Q A                                                Lat
                                                                                             est
                                GIT




                                                                         ry                        De
                                                                      ito                            plo
                                                                    os                                  y
                                                                 ep
                        Version Control                     ac tR
                                                       r tif
                                                      A
                                                                               Latest & Deploy System




Samstag, 20. April 13
The Jenkins Jobs




Samstag, 20. April 13
The Jenkins Jobs

                        TriggerCommit                  Install on Latest


                                Commit                        Contract Based Tests


                                        PHPUnit                            Acceptance Tests


                                           Build Package

                                                                      Install on Deploy



Samstag, 20. April 13
Jenkins - Commit Build


                        Collect required resources          Tag
                        Update dependencies
                        Run the unit tests
                        If tests fail, inform the team
                        Tag the package
                        Trigger the build packages

                                                         composer update


Samstag, 20. April 13
Jenkins - Build package



                        Run compass to generate the css files
                        Exclude some files, like .git*
                        Generate a version file
                        Build the package
                        Archive the package




Samstag, 20. April 13
Jenkins - Install on latest


                        Copy the package to the workspace
                        Extract the package
                        Use TYPO3.Surf for the installation
                        Settings for the system are preconfigured with the context



                                  FLOW_CONTEXT = Production/Latest




Samstag, 20. April 13
Jenkins - Import test data

                        Command line controller to import test data...
                        ..and to install static data from external systems
                        Never work on real data!!

                        Latest

                                                                Test data



                                                               Static data



Samstag, 20. April 13
Jenkins - Running tests

                        Contract tests

                          Calling the SOAP Web Service
                          Validate the response with xsd files

                        Acceptance tests

                          Running headless cucumber tests




Samstag, 20. April 13
Jenkins - Cucumber

                        Running headless tests for the web (capybara)
                        Running Android tests (calabash-android)
                        Running iOS tests (calabash-ios)




Samstag, 20. April 13
Jenkins - Cucumber

                        Running headless tests for the web (capybara)
                        Running Android tests (calabash-android)
                        Running iOS tests (calabash-ios)




Samstag, 20. April 13
Jenkins - install on deploy


                                               Deploy




Samstag, 20. April 13
Jenkins - Publish release

                        Remove unused context based settings
                        Publish the package so the customer can access it
                        Add a version file for automatic updates




Samstag, 20. April 13
Jenkins - Publish a different release


                        Development Branch               Release Branch



                                  Pipeline               Pipeline



                        Development Package              Release Package




Samstag, 20. April 13
Jenkins - Publish a different release


                        Development Branch               Release Branch
                                                                              s
                                                                          ate
                                                                       p d
                                                                   k u
                                                                or
                                  Pipeline                     w
                                                        Pipeline
                                                              e
                                                            m
                                                         fra
                                                     n o

                        Development Package              Release Package




Samstag, 20. April 13
The Jenkins Jobs




Samstag, 20. April 13
The Jenkins Jobs

                           trigger commit           1 second
                               commit          2 minutes 33 seconds
                            build package      1 minute 10 seconds
                           install on latest   1 minute 11 seconds
                          acceptance latest    1 minute 57 seconds
                           install on deploy    1 minute 3 seconds
                          acceptance deploy    1 minute 25 seconds
                           publish release          1 seconds




Samstag, 20. April 13
Samstag, 20. April 13
Part 3: Deployment



Samstag, 20. April 13
Overview




                        Development   Continuous Delivery   Deployment




Samstag, 20. April 13
Deployment

                                                Release Package




                                                                  Sta
                                                                     gin
                                                                         g
                                                 ry                          Pro
                                            osito                               du
                                         ep                                        ct
                                    ac tR                                            ion
                               r tif
                              A




Samstag, 20. April 13
Deployment - TYPO3.Surf


                        TYPO3.Surf is part of the release package
                        Same install process as on the latest and deploy system
                        Installer is tested over and over again




                                                    TYPO3.Surf inside



Samstag, 20. April 13
Deployment - Parameters
                                                            Parameters


                                    Customers test server

                                                            Parameters


                                      Production server




Samstag, 20. April 13
Deployment - Commands

                            $ tar -xzf ApplicationPackage_v1x.tar.gz
                            $ sudo FLOW_CONTEXT=Production
                        ./flow surf:deploy ApplicationSelfInstall
                        --context Production --targetPath /var/www/myvhost/
                        --shellUsername jenkins --webserverUsername www-data
                        --webserverGroupame www-data --dbUser myDBUser
                        --dbName myDatabase --dbHost localhost
                        --dbPassword verySecret




Samstag, 20. April 13
Deployment - Installation steps
                                                                            ease
                                                                          l
                                                                        Re
                                                                     nt
                                             WWW              C urre


                        Store release path (for a rollback)
                        Update database credentials
                                                                        ease
                                                                      l
                        Create a crontab file                      Re
                                                              New
                        Doctrine migrate




Samstag, 20. April 13
Deployment - Installation steps
                                                                         ease
                                                                       l
                                                                     Re
                                                                  nt
                                         WWW               C urre


                        Add context to htaccess        switch
                        Set file permissions
                                                                     ease
                                                                   l
                        Warm up caches                         Re
                                                           New
                        Switch: create a new symlink




Samstag, 20. April 13
Deployment - Downtime




                                How long does it take
                                 to delete a symlink
                                         and
                                  create a new one?




Samstag, 20. April 13
YES!!

                        We are live!!




Samstag, 20. April 13
Samstag, 20. April 13
Samstag, 20. April 13
Questions




                                     ?
                             tlayh




                                         www.layh.com




Samstag, 20. April 13
Samstag, 20. April 13
Samstag, 20. April 13
Thank you !!




Samstag, 20. April 13

Weitere ähnliche Inhalte

Kürzlich hochgeladen

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 

Kürzlich hochgeladen (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Empfohlen

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 

Empfohlen (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

A complete TYPO3.Flow Development and Deployment Pipeline

  • 1. A complete TYPO3.Flow Development and Deployment Pipeline Thomas Layh @ Inspiring Flow 2013 Samstag, 20. April 13
  • 4. About me Thomas Layh AOE media GmbH TYPO3 Developer Fields of interest: TYPO3 TYPO3.Flow Automated testing Android Samstag, 20. April 13
  • 5. The Projects external systems Samstag, 20. April 13
  • 8. Overview Development Continuous Delivery Deployment Samstag, 20. April 13
  • 9. The Developer What does a developer need to be happy? short ramp up time fast development system development environment with full access Samstag, 20. April 13
  • 10. Development System - fast ramp up time Ask your IT for a new development environment Wait until it is finished Buy a new development server if required Grant access to the developer for the project Samstag, 20. April 13
  • 11. Development System - fast development server Samstag, 20. April 13
  • 12. Development System - fast development server t 4 t 8 j ec j ec Pro Pro 3 7 je ct je ct Pro Pro ct 2 ec t6 ro je oj P Pr 1 5 je ct je ct P ro P ro Samstag, 20. April 13
  • 13. Development System - full access I want I want change stability Dev Op Samstag, 20. April 13
  • 14. Vagrant + || Samstag, 20. April 13
  • 15. Vagrant - Complicated setup (Windows) Install Git Install Ruby Install Rubygems Install Vagrant .... Samstag, 20. April 13
  • 16. Vagrant - Complicated setup (Windows) Install Git Install Vagrant Install Ruby Install Rubygems Install Vagrant .... Samstag, 20. April 13
  • 17. Vagrant - Ramp up time Install Vagrant $ git clone aoe_cookbook $ PROJECT=myProject vagrant up Samstag, 20. April 13
  • 18. Vagrant - Ramp up time Install Vagrant $ git clone aoe_cookbook $ PROJECT=myProject vagrant up Enter the commands Get a coffee Start working Samstag, 20. April 13
  • 19. Vagrant - add some (custom) config and colors .gitconfig .gitcommit-template .bashrc .vimrc .zshrc Samstag, 20. April 13
  • 20. Vagrant - add some (custom) config and colors .gitconfig m te .gitcommit-template sys ost .bashrc r h ou .vimrc y li ke .zshrc e ls Fe Samstag, 20. April 13
  • 21. Vagrant - Cookbooks http://community.opscode.com/cookbooks apache mysql php composer ....... Samstag, 20. April 13
  • 22. Vagrant - Reusing Cookbooks AOE PHP Cookbook PHP Cookbook Samstag, 20. April 13
  • 24. Vagrant - Performance Your Project Samstag, 20. April 13
  • 26. Vagrant - full access No need to ask the IT Try out some fancy new stuff Destroyed the server? vagrant destroy / vagrant up Add a recipe and it is documented Samstag, 20. April 13
  • 27. Vagrant - different Platforms Runs on: http://downloads.vagrantup.com/ Samstag, 20. April 13
  • 28. Vagrant - TYPO3 Server Team ....and some less important sites. Samstag, 20. April 13
  • 30. Part 2: Continuous Delivery Samstag, 20. April 13
  • 31. Overview Continuous Development Deployment Delivery Samstag, 20. April 13
  • 33. Components TYPO3.Surf Samstag, 20. April 13
  • 34. Overview Installation Package e nt QA loym p De Q A Lat est GIT ry De ito plo os y ep Version Control ac tR r tif A Latest & Deploy System Samstag, 20. April 13
  • 36. The Jenkins Jobs TriggerCommit Install on Latest Commit Contract Based Tests PHPUnit Acceptance Tests Build Package Install on Deploy Samstag, 20. April 13
  • 37. Jenkins - Commit Build Collect required resources Tag Update dependencies Run the unit tests If tests fail, inform the team Tag the package Trigger the build packages composer update Samstag, 20. April 13
  • 38. Jenkins - Build package Run compass to generate the css files Exclude some files, like .git* Generate a version file Build the package Archive the package Samstag, 20. April 13
  • 39. Jenkins - Install on latest Copy the package to the workspace Extract the package Use TYPO3.Surf for the installation Settings for the system are preconfigured with the context FLOW_CONTEXT = Production/Latest Samstag, 20. April 13
  • 40. Jenkins - Import test data Command line controller to import test data... ..and to install static data from external systems Never work on real data!! Latest Test data Static data Samstag, 20. April 13
  • 41. Jenkins - Running tests Contract tests Calling the SOAP Web Service Validate the response with xsd files Acceptance tests Running headless cucumber tests Samstag, 20. April 13
  • 42. Jenkins - Cucumber Running headless tests for the web (capybara) Running Android tests (calabash-android) Running iOS tests (calabash-ios) Samstag, 20. April 13
  • 43. Jenkins - Cucumber Running headless tests for the web (capybara) Running Android tests (calabash-android) Running iOS tests (calabash-ios) Samstag, 20. April 13
  • 44. Jenkins - install on deploy Deploy Samstag, 20. April 13
  • 45. Jenkins - Publish release Remove unused context based settings Publish the package so the customer can access it Add a version file for automatic updates Samstag, 20. April 13
  • 46. Jenkins - Publish a different release Development Branch Release Branch Pipeline Pipeline Development Package Release Package Samstag, 20. April 13
  • 47. Jenkins - Publish a different release Development Branch Release Branch s ate p d k u or Pipeline w Pipeline e m fra n o Development Package Release Package Samstag, 20. April 13
  • 49. The Jenkins Jobs trigger commit 1 second commit 2 minutes 33 seconds build package 1 minute 10 seconds install on latest 1 minute 11 seconds acceptance latest 1 minute 57 seconds install on deploy 1 minute 3 seconds acceptance deploy 1 minute 25 seconds publish release 1 seconds Samstag, 20. April 13
  • 52. Overview Development Continuous Delivery Deployment Samstag, 20. April 13
  • 53. Deployment Release Package Sta gin g ry Pro osito du ep ct ac tR ion r tif A Samstag, 20. April 13
  • 54. Deployment - TYPO3.Surf TYPO3.Surf is part of the release package Same install process as on the latest and deploy system Installer is tested over and over again TYPO3.Surf inside Samstag, 20. April 13
  • 55. Deployment - Parameters Parameters Customers test server Parameters Production server Samstag, 20. April 13
  • 56. Deployment - Commands $ tar -xzf ApplicationPackage_v1x.tar.gz $ sudo FLOW_CONTEXT=Production ./flow surf:deploy ApplicationSelfInstall --context Production --targetPath /var/www/myvhost/ --shellUsername jenkins --webserverUsername www-data --webserverGroupame www-data --dbUser myDBUser --dbName myDatabase --dbHost localhost --dbPassword verySecret Samstag, 20. April 13
  • 57. Deployment - Installation steps ease l Re nt WWW C urre Store release path (for a rollback) Update database credentials ease l Create a crontab file Re New Doctrine migrate Samstag, 20. April 13
  • 58. Deployment - Installation steps ease l Re nt WWW C urre Add context to htaccess switch Set file permissions ease l Warm up caches Re New Switch: create a new symlink Samstag, 20. April 13
  • 59. Deployment - Downtime How long does it take to delete a symlink and create a new one? Samstag, 20. April 13
  • 60. YES!! We are live!! Samstag, 20. April 13
  • 63. Questions ? tlayh www.layh.com Samstag, 20. April 13
  • 66. Thank you !! Samstag, 20. April 13