Page 1
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
November 13, 2014 | Las Vegas
Automating Your Software Delivery Pipeline
Corey Donohoe, GitHub
DEV308
Page 6
Change Control
Board
Page 12
Fast forward to 2014
Page 13
Different Methods
Page 15
Experiences to Products
• Scripts
• Testing
• Branch Deployments
• Chat Deployments
• AutoDeployment
Page 21
Continuous
Integration
Page 24
Continuous Delivery
Page 27
Continuous
Deployment
Page 29
GitHub’s Approach
Page 30
What’s the difference again?
Page 31
Deployment Basics
Page 33
Reliable Deployment
Page 34
Less Ops Reliance
Page 36
Consistent Process
Page 40
Scripting Deploys
Page 41
Deployment Service
Page 44
Deploying from Chat
Page 46
Deployments API State Diagram
Page 48
Deploying from Chat
Page 49
Links right your deployment dashboard
Page 50
Example hubot-deploy config file
{
"camo": {
"provider": "aws_opsworks",
"repository": "legions/camo",
"environments": ["production", "staging"],
"github_api": "https://enterprise.me.org/api/v3",
"github_token": "<redacted>",
"opsworks": {
"production": {
"app_id": "f59a45e4-59b0-11e4-aa15-123b93f75cba",
"stack_id": "f59a4832-59b0-11e4-aa15-123b93f75cba"
},
"staging": {
"app_id": "f59a4832-59b0-11e4-aa15-123b93f75cba",
"stack_id": "f59a4be8-59b0-11e4-aa15-123b93f75cba"
}
}
}
}
Page 54
Open Pull Request
Page 55
Opening a Pull Request
Page 56
Coworker Signs Off
Page 57
Deploying from Chat
Page 58
Pull Request Merged
Page 59
Deploying from Chat
Page 60
‘master’ goes out
Page 61
Continuous
Integration
Page 62
Settles these kinds of arguments
Page 64
GitHub Status API
Page 65
How the status API works
Page 66
Multiple Services
Page 69
Pull Request with CI Output
Page 70
Easily bounce to the right build in Travis
Page 71
Iterating on Change
Page 73
Deploying a branch to verify it
Page 74
Reflected in the pull request
Page 75
Rollback Strategy?
Page 76
Performance
Problems?
Page 77
Elevated
Error Rates
Page 78
Revert a
Pull Request?
Page 79
Enable Experiments
Page 80
Removing complex caching
Page 81
Branch Deploy Flow
Page 82
Experiment in environments, document in pull requests
Page 84
GitHub Auto-Deploy
Page 85
It’s a service inside of github
Page 86
Uses the Status API
Page 87
Create Deployments
Page 88
Specify Environment
Page 89
Provides
Continuous Delivery
Page 90
Provides
Continuous
Deployment
Page 91
auto-deploy in action
Page 92
auto-deploy in action
Page 94
Environment Locks
Page 95
Service Validation
Page 96
Service Validation Example
hooks:
ApplicationStart:
- location: scripts/verify_functional_tests.sh
timeout: 600
ValidateService:
- location: scripts/verify_new_user_signups.sh
timeout: 600
Page 97
Does new code work
Page 98
Elevated Error Rates
Page 100
Continuous Branch
Deployments
Page 101
Discussing
Performance
Page 103
Lots of Possibilities
Page 104
This model has worked well for me
Page 107
Please give us your feedback on this session.
Complete session evaluations and earn re:Invent swag.
http://bit.ly/awsevals
Page 108
That’s all folks.