San Francisco, CA
Janine
Fiona
that’s me
Leo
Continuous Development Continuous Delivery Continuous Integration Continuous Deployment Continuous Monitoring
Continuous
JenkinsEverything sounds better
with “continuous”
CMS Magento Solr ERP
Project
Applications
Magento Magento 117 Magento 118 Magento 119Builds
Release
Staging Magento 72 Magento 103 Magento 119 Magento 72 Magento 103 Magento 119 Magento 72 Magento 103 Magento 119
Environment
Servers
Instances
Staging Integration
Devbox Deploy Production
transient,
Staging Integration
Devbox Deploy Production
VirtualBox
+ Vagrant
Jenkins
Server
identical
setup
What is it?
A simple shell script. That’s it!
No Ant, no Phing, no fancy PHP tool/framework
Where is it used?
In the build job of a Jenkins server
What does it need to know?
Where to get all the source code from
What does it do?
add metadata, composer, minify,
What is it?
A couple of chef cookbooks.
Run by AWS OpsWorks or Vagrant,…
Where is it used?
On the target servers
What does it need to know?
The role of the server (web server, devbox, Redis,…)
What does it do?
Installing and configuring web server, PHP, MySQL, Redis,…
What is it?
A simple shell script.
Or the “deploy” chef cookbook Or EasyDeployWorkflows
Where is it used?
On the target servers
What does it need to know?
How to get the build and where to deploy it to
What does it do?
(Resetting the environment), getting the build, extracting it, managing release folders and symlinks, triggering installer,
What is it?
A simple shell script.
Sometimes triggered inside “deploy” before_migrate.rb
Where is it used?
On the target servers, called from deployment step
What does it need to know?
What environment this is. Injected settings
What does it do?
doesn’t know anything about
the app, except where to get it
from and where to put it
knows how to get
the app up and
no creating
CMS blocks
no creating
product attributes
no updating of any
configuration settings!
no clearing
the cache
no purging CDN or
Reverse Proxy
content!
media directory (sometimes minified) Database dump (Vanilla) Magento core Modules Scripts Settings Tools
Urls
Database
Settings
Payment Provider
Configuration
Feature
Flags…
Everything that’s
different between two
environments
Vagrant
Boxes
Awesome
stuff
Every single
line potentially
can break
production!
Bratwurst
(Germans)Donut
Pizza
(Italians)Version Control
GIT, SVN,…
Version Control Code Reviews
Version Control Code Reviews Build Files DB Installer Settings
Version Control Code Reviews Build Files DB Installer Static Code Analysis
CodeSniffer
php-pmd
php-cpd
php-depend
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
First system where
code from all
developers/teams
meets each other
unstable system,
might be broken,
will be rebuilt
without warning
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration” Unit Tests
PHPUnit
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests
AOE PMD
(for Magento)broken links, HTTP headers, W3C validity,…
Test features that rely on other parts
(e.g. framework, external services,…) External components
(SSL, Redis, Varnish,
Basically this is also PHPUnit, but addressing
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests Acceptance Tests
Firefox Chrome browser size 640 980 1280 1900 US UK DE IT FR languages
language size
browser
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests Acceptance Tests
Install on “Staging”
Behat,
PDIFF,…
Same setup as production, but different machinesClient QA /
approval
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests Acceptance Tests
Install on “Staging” Stress Tests
JMeter
Spin up EC2 instances to produce trafficAgain:
multiple servers or
autoscaling setup
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests Acceptance Tests
Install on “Staging” Stress Tests Install on “Production”
A/B
Deployments
on different
scales
Plan B:
rollback
Zero DowntimeVersion Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests Acceptance Tests
Install on “Staging” Stress Tests Install on “Production”
Deployment !=
Version Control Code Reviews Build Files DB Installer Static Code Analysis Install on “Integration”
Unit Tests Integration Tests Acceptance Tests
Install on “Staging” Stress Tests Install on “Production” Enable Features
Version
Control Code Reviews Build Static Code Analysis
Install on “Integration”
Unit Tests Integration Tests Acceptance Tests Install on “Staging” Install on
Pipeline Visualization
#284 #283 #282 #281 #280Build Static Code
Analysis Unit Tests Install on “Integration” Integration Tests Acceptance Tests #285