Conceptual Overview

David Laing edited this page Oct 15, 2013 · 9 revisions

Development flow overview

(screencast walking through the diagram below)

|-------------|                    |-----------|                     |-----------|
|   GitHub    |  --PR triggers-->  |  Jenkins  | -- rake release --> | Stackato  |
|-------------|                    |-----------|                     |-----------|
  |  ^
  |  |
  |  | |--------------------------------Dev workstation (Vagrant VM host)--------------|
  |  P |                        |------------ Dev server (Vagrant VM guest)------------|
  c  R |                        | ~/dist/bin/start.sh          \                       |
  l  | |                        | ~/dist/runtimes/hiphop-php   |                       |
  o  | |                        | ~/dist/runtimes/nginx        |                       |
  n  | |                        | ~/dist/public/index.php      |--- rake run           |
  e  --|                        | ~/dist/public/wp-config.php  |                       |
  |    |                        | ~/dist/public/wordpress/     /                       |
  |    |                        | ~/dist/public/wp-content/    <--- from ~/public/wp-content     |
  ---> |                        |                                                      |
       |                        | ~/buildpack/  <--  stackato-buildpack-wordpress      |   
       |                        |                                                      |
       | ~/public               | ~/public        \                                    |
       | ~/Rakefile             | ~/Rakefile      /  -- synced from guest              |
       | ~/Vagrantfile          |------------------------------------------------------|
       |------------------------|------------------------------------------------------| 


  Editor (on host)     Terminal 1                Terminal 2
   ~/src                * clone & create branch   * vagrant ssh
                        * vagrant up              * rake copy           \
                        * vagrant sync            * rake build           |--> = rake run
                                                  * rake dev_server:all /

Links

  1. Jenkins builds - http://ci.labs.cityindex.com:8080/view/wordpress-development-flow/
  2. Code - https://github.com/cityindex/wordpress-development-flow
  3. Issues - https://github.com/cityindex/wordpress-development-flow/issues
  4. Production - http://wordpress-development-flow.stackato.cil.stack.me/
  5. Pre-Production - http://master-wordpress-development-flow.stackato.cil.stack.me/
  6. Pull Request X - http://prX-wordpress-development-flow.stackato.cil.stack.me/

Guiding principals

  1. Dev / Prod parity -> A local development build & run time is encapsulated in a Vagrant VM. Whilst the developer is free to choose their editor tooling; they will be running & debugging their code in an environment that is nearly identical to the production deployment environment as possible.
  2. Buildpack ->
  3. Build script - the following tasks are automated using the build script:
    1. Compilation - converting source code to running code
    2. Running - starting
    3. Deployment
  4. Continuous Integration Server - source code events trigger the CI server to run build script tasks; and report on their success or failure
  5. Platform as a Service - The hosting platform is a PaaS; enabling scripted deployment