SlideShare a Scribd company logo
Automating Web
Application Deployment
      Mathew Byrne - July 2011
Introduction
• What is the problem?
• What is deployment?
 •   Web application life-cycle.

• My background — JB Interactive.
 •   How we automated deployment.

 •   Benefits and business case.
Why Automate
       Deployment?
• Automated, repeatable, consistent process.
• Light-weight code changes.
• Manage configurations and environments.
• Minimise human error.
• Saves time == higher efficiency
• Standardise across projects.
Deployment Tools
• Lots of tools already in existence:
 • Fabric (python)
 • Capistrano (ruby)
 • Rake (ruby)
 • make (C)
• Not many established PHP solutions…
Phing
• PHing Is Not Gnu make
• A build tool; not just a deploy tool.
• Uses XML configuration to automate tasks.
• Based on Apache Ant.
• Used by Propel, Symfony, Zend Framework,
  Xinc…
Why Use Phing?
• Written in pure PHP - easy to hack!
• Minimal dependancies.
• Supported, moderate ongoing development.
• Functionality through extending.
What Can Phing do?
• Almost anything!
 •   Version Control - Subversion, git, etc.

 •   PHPUnit/Testing

 •   Code analysis

 •   Compilation and Minification

 •   File Manipulation

 •   And much, much more…
Phing Basics
• Project - build.xml
• Targets
  •   Dependency tracking.

• Tasks
  •   Phing building blocks.

  •   Usually this is where you extend.
Phing Basics
• Properties
 •   User variables!

 •   Can be stored in external files and included at
     run-time.

 •   Can differ between builds, environments and
     configurations.

 •   Can be overwritten at run-time
Hello World!
<?xml version="1.0" encoding="UTF-8"?>
<project name="hello-world" default="greet">

  <property name="message" value="Hello World!" />

  <target name="prepare">
    <echo>Preparing your greeting...</echo>
  </target>

  <target name="greet" depends="prepare">
    <echo msg="${message}" />
  </target>

</project>
Hello World!
Config Management
• Using properties separates tasks from
  environments.
• Allows for more generic deploy setups.
                prop

                                <?xml

  prop
              development.ini


                prop
   test.ini

                                  build.xml
              production.ini
Extending Phing
• As simple as extending a base class and
  pointing to it in your build script.
• Lots of extensions already in existence.
 • Read through phing documentation.
 • Search GitHub for “phing”
• Easy to integrate with existing tools.
https://github.com/mathewbyrne/closure-task
Environments
• Defined by configuration.
• Should have sensible defaults.
• Activated by deployment process.
• Important - can be a security issue!


  development       staging        production
Deploying with
       Version Control
• Websites are more than just <code>
 •   Configuration        •   User Content

 •   Assets              •   Setup

 •   Databases Schemas


• Version Control is easy, but not flexible.
• Deployment procedure not in VC.
Database Migrations
• Migrations == Database versioning.
• Automation required.
• Should be part of the deployment process.
Conclusion
• Automated deployment is highly desirable.
• Lots of tools in existence.
• Environment and configuration are
  important.
• Automate everything!

More Related Content

What's hot (20)

PPTX
Php on azure
Anders Lybecker
 
PPTX
ASP.NET Core 2.1: The Future of Web Apps
Shahed Chowdhuri
 
PPTX
ASP.NET Core 2.1: The Future of Web Apps
Shahed Chowdhuri
 
PPT
ASPNET Roadmap
ukdpe
 
PPSX
All About Asp Net 4 0 Hosam Kamel
Hosam Kamel
 
ODP
Get going with CakePHP Framework at gnuNify 2010
Abbas Ali
 
PPTX
Hosting a website on IIS Server
Dinesh Vasamshetty
 
PPTX
IIS for Developers
Ido Flatow
 
PDF
IIS 7.0 Architecture And Integration With Asp.Net
Manny Siddiqui MCS, MBA, PMP
 
PPTX
Microsoft/Zend Webcast on Cloud Computing
Josh Holmes
 
PPT
ASP.NET 4.0 Roadmap
Harish Ranganathan
 
PPTX
New microsoft office power point presentation
teach4uin
 
PPTX
Migrando una app de angular.js a Blazor
Miguel Angel Teheran Garcia
 
PPTX
Php On Windows
Guy Burstein
 
PPTX
introduction and configuration of IIS (in addition with printer)
Assay Khan
 
PPTX
Angular on ASP.NET MVC 6
Noam Kfir
 
PPTX
Introduction to ASP.NET
Peter Gfader
 
PPTX
ASP.NET Core 2.1: The Future of Web Apps
Shahed Chowdhuri
 
PPTX
Introduction to CodeIgniter
Piti Suwannakom
 
PPTX
Learning ASP.NET 5 and MVC 6
Ido Flatow
 
Php on azure
Anders Lybecker
 
ASP.NET Core 2.1: The Future of Web Apps
Shahed Chowdhuri
 
ASP.NET Core 2.1: The Future of Web Apps
Shahed Chowdhuri
 
ASPNET Roadmap
ukdpe
 
All About Asp Net 4 0 Hosam Kamel
Hosam Kamel
 
Get going with CakePHP Framework at gnuNify 2010
Abbas Ali
 
Hosting a website on IIS Server
Dinesh Vasamshetty
 
IIS for Developers
Ido Flatow
 
IIS 7.0 Architecture And Integration With Asp.Net
Manny Siddiqui MCS, MBA, PMP
 
Microsoft/Zend Webcast on Cloud Computing
Josh Holmes
 
ASP.NET 4.0 Roadmap
Harish Ranganathan
 
New microsoft office power point presentation
teach4uin
 
Migrando una app de angular.js a Blazor
Miguel Angel Teheran Garcia
 
Php On Windows
Guy Burstein
 
introduction and configuration of IIS (in addition with printer)
Assay Khan
 
Angular on ASP.NET MVC 6
Noam Kfir
 
Introduction to ASP.NET
Peter Gfader
 
ASP.NET Core 2.1: The Future of Web Apps
Shahed Chowdhuri
 
Introduction to CodeIgniter
Piti Suwannakom
 
Learning ASP.NET 5 and MVC 6
Ido Flatow
 

Similar to Automating Web Application Deployment (20)

KEY
An introduction to Phing the PHP build system
Jeremy Coates
 
KEY
An introduction to Phing the PHP build system (PHPDay, May 2012)
Jeremy Coates
 
PDF
Building and deploying PHP applications with Phing
Michiel Rook
 
PDF
Deploying PHP applications with Phing
Michiel Rook
 
PPTX
Automation with phing
Joey Rivera
 
PPT
Build Automation of PHP Applications
Pavan Kumar N
 
PDF
Putting Phing to Work for You
hozn
 
KEY
Write php deploy everywhere
Michelangelo van Dam
 
KEY
Phing
Jeremy Coates
 
PDF
Stress Free Deployment - Confoo 2011
Bachkoutou Toutou
 
PPTX
Automated Deployment With Phing
Daniel Cousineau
 
PDF
Automation using-phing
Rajat Pandit
 
PDF
Phing: Building with PHP
hozn
 
PDF
Building and Deploying PHP apps with Phing
Michiel Rook
 
PDF
Write php deploy everywhere tek11
Michelangelo van Dam
 
PPTX
Drupal & Continous Integration - SF State Study Case
Emanuele Quinto
 
PDF
Phing
mdekrijger
 
PDF
Web Developing In Search
Frank Xu
 
PDF
Rock Solid Deployment of Web Applications
Pablo Godel
 
PDF
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
Pablo Godel
 
An introduction to Phing the PHP build system
Jeremy Coates
 
An introduction to Phing the PHP build system (PHPDay, May 2012)
Jeremy Coates
 
Building and deploying PHP applications with Phing
Michiel Rook
 
Deploying PHP applications with Phing
Michiel Rook
 
Automation with phing
Joey Rivera
 
Build Automation of PHP Applications
Pavan Kumar N
 
Putting Phing to Work for You
hozn
 
Write php deploy everywhere
Michelangelo van Dam
 
Stress Free Deployment - Confoo 2011
Bachkoutou Toutou
 
Automated Deployment With Phing
Daniel Cousineau
 
Automation using-phing
Rajat Pandit
 
Phing: Building with PHP
hozn
 
Building and Deploying PHP apps with Phing
Michiel Rook
 
Write php deploy everywhere tek11
Michelangelo van Dam
 
Drupal & Continous Integration - SF State Study Case
Emanuele Quinto
 
Phing
mdekrijger
 
Web Developing In Search
Frank Xu
 
Rock Solid Deployment of Web Applications
Pablo Godel
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
Pablo Godel
 
Ad

Recently uploaded (20)

PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
July Patch Tuesday
Ivanti
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Ad

Automating Web Application Deployment

  • 1. Automating Web Application Deployment Mathew Byrne - July 2011
  • 2. Introduction • What is the problem? • What is deployment? • Web application life-cycle. • My background — JB Interactive. • How we automated deployment. • Benefits and business case.
  • 3. Why Automate Deployment? • Automated, repeatable, consistent process. • Light-weight code changes. • Manage configurations and environments. • Minimise human error. • Saves time == higher efficiency • Standardise across projects.
  • 4. Deployment Tools • Lots of tools already in existence: • Fabric (python) • Capistrano (ruby) • Rake (ruby) • make (C) • Not many established PHP solutions…
  • 5. Phing • PHing Is Not Gnu make • A build tool; not just a deploy tool. • Uses XML configuration to automate tasks. • Based on Apache Ant. • Used by Propel, Symfony, Zend Framework, Xinc…
  • 6. Why Use Phing? • Written in pure PHP - easy to hack! • Minimal dependancies. • Supported, moderate ongoing development. • Functionality through extending.
  • 7. What Can Phing do? • Almost anything! • Version Control - Subversion, git, etc. • PHPUnit/Testing • Code analysis • Compilation and Minification • File Manipulation • And much, much more…
  • 8. Phing Basics • Project - build.xml • Targets • Dependency tracking. • Tasks • Phing building blocks. • Usually this is where you extend.
  • 9. Phing Basics • Properties • User variables! • Can be stored in external files and included at run-time. • Can differ between builds, environments and configurations. • Can be overwritten at run-time
  • 10. Hello World! <?xml version="1.0" encoding="UTF-8"?> <project name="hello-world" default="greet"> <property name="message" value="Hello World!" /> <target name="prepare"> <echo>Preparing your greeting...</echo> </target> <target name="greet" depends="prepare"> <echo msg="${message}" /> </target> </project>
  • 12. Config Management • Using properties separates tasks from environments. • Allows for more generic deploy setups. prop <?xml prop development.ini prop test.ini build.xml production.ini
  • 13. Extending Phing • As simple as extending a base class and pointing to it in your build script. • Lots of extensions already in existence. • Read through phing documentation. • Search GitHub for “phing” • Easy to integrate with existing tools. https://github.com/mathewbyrne/closure-task
  • 14. Environments • Defined by configuration. • Should have sensible defaults. • Activated by deployment process. • Important - can be a security issue! development staging production
  • 15. Deploying with Version Control • Websites are more than just <code> • Configuration • User Content • Assets • Setup • Databases Schemas • Version Control is easy, but not flexible. • Deployment procedure not in VC.
  • 16. Database Migrations • Migrations == Database versioning. • Automation required. • Should be part of the deployment process.
  • 17. Conclusion • Automated deployment is highly desirable. • Lots of tools in existence. • Environment and configuration are important. • Automate everything!

Editor's Notes