Chat-Powered Continuous Delivery Ben Lavender Hi, Im @bhuga Im - - PowerPoint PPT Presentation

chat powered continuous delivery
SMART_READER_LITE
LIVE PREVIEW

Chat-Powered Continuous Delivery Ben Lavender Hi, Im @bhuga Im - - PowerPoint PPT Presentation

Chat-Powered Continuous Delivery Ben Lavender Hi, Im @bhuga Im @bhuga everywhere I work on workflow I work at GitHub This talk is: Selling you on GitHubs workflow Tools to build your own workflow GitHub Flow The Rules


slide-1
SLIDE 1

Chat-Powered Continuous Delivery

Ben Lavender

slide-2
SLIDE 2

Hi, I’m @bhuga

I work on workflow I work at GitHub I’m @bhuga everywhere

slide-3
SLIDE 3

This talk is:

  • Selling you on GitHub’s workflow
  • Tools to build your own workflow
slide-4
SLIDE 4
slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8
slide-9
SLIDE 9

GitHub Flow

slide-10
SLIDE 10

The Rules

  • Anything on master is deployable. And will be. Right now.
  • Work off of short-lived named branches
  • Open a pull request for help, feedback, and signoff
  • Once you merge, deploy immediately.
slide-11
SLIDE 11

Do work on a branch Decide what's worth doing Automated tests Deploy to production Merge to master Manual tests auto-deploy feedback feedback feedback SCRUM or whatever

slide-12
SLIDE 12

Story Time

A Fix at GitHub

Names have been changed to protect the innocent

slide-13
SLIDE 13

Step 1: Decide what to do Step 1: Decide what to do

slide-14
SLIDE 14

Step 2: Do it

slide-15
SLIDE 15

Step 2: Do it

git push

slide-16
SLIDE 16

ASYNCHRONOUSLY

  • Not at the same time
  • At your leisure
  • When it’s not interrupting people
slide-17
SLIDE 17
slide-18
SLIDE 18
slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22
slide-23
SLIDE 23
slide-24
SLIDE 24
slide-25
SLIDE 25
slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 29
slide-30
SLIDE 30
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33
slide-34
SLIDE 34
slide-35
SLIDE 35
slide-36
SLIDE 36

GitHub Flow

slide-37
SLIDE 37

GitHub Flow

is a version of

Continuous Deployment

slide-38
SLIDE 38
  • Techniques such as automated testing,

continuous integration and continuous deployment allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead.

Professor Wikipedia says:

slide-39
SLIDE 39

…boring

Continuous deployment is about developing and deploying in short, rapid increments.

slide-40
SLIDE 40

Benefits for Developers:

  • A simple, easy-to-learn workflow
  • No release process
  • Frequent feedback
  • Low-risk, low-stress ships
  • Merge conflicts become trivial
  • Ownership, agency, quick wins, and responsibility
slide-41
SLIDE 41

Continuously deploy

everything

slide-42
SLIDE 42
slide-43
SLIDE 43
slide-44
SLIDE 44
slide-45
SLIDE 45
slide-46
SLIDE 46
slide-47
SLIDE 47

How to get from where you are to continuous deployment

Story Time

slide-48
SLIDE 48

Practices

Part 1

slide-49
SLIDE 49

Make TINY changes

slide-50
SLIDE 50
slide-51
SLIDE 51

Help your application

understand development

slide-52
SLIDE 52
  • Feature flags
slide-53
SLIDE 53
slide-54
SLIDE 54
slide-55
SLIDE 55

Use

feature flags

to make ships smaller and safer

slide-56
SLIDE 56
slide-57
SLIDE 57
slide-58
SLIDE 58

Tools

Part 2

slide-59
SLIDE 59

Chat

Chat. chat, chat, chat, chat, chat, chat. With a robot.

slide-60
SLIDE 60

Shared Console

  • /deploy
  • /ci build
  • /merge
  • /config
slide-61
SLIDE 61
slide-62
SLIDE 62
slide-63
SLIDE 63
slide-64
SLIDE 64
slide-65
SLIDE 65

Exceptions

slide-66
SLIDE 66

Graphs

slide-67
SLIDE 67
slide-68
SLIDE 68
slide-69
SLIDE 69

Hackable toolchain

slide-70
SLIDE 70

CD needs to be automated

  • Builds on every commit
  • Results of signoff (feedback)
  • Deployment
  • Setup for manual tests
  • Communication
slide-71
SLIDE 71

Implement on new branch Run build Communicate Build status Respond to build issues Create pull request (request feedback) Communicate ready for feedback Review Communicate review Respond to review signoff branch deploy Test in production Fix issues Re-deploy branch Merge branch integrate master Deploy master ! integrate master

slide-72
SLIDE 72

Implement on new branch Run build Communicate Build status Respond to build issues Create pull request (request feedback) Communicate ready for feedback Review Communicate review Respond to review signoff branch deploy Test in production Fix issues Re-deploy branch Merge branch integrate master Deploy master ! integrate master

slide-73
SLIDE 73

VCS server (GitHub) Webhook Receiver

HTTP POST

WebHooks

slide-74
SLIDE 74

VCS server (GitHub) Git push Webhook Receiver

Commit Info

slide-75
SLIDE 75

VCS server (GitHub) Git push Webhook Receiver Issue Assigned

HTTP POST

Repository Starred Pull Request Opened Tests Failed

slide-76
SLIDE 76

GitHub Events

  • There’s a ton
slide-77
SLIDE 77

GitHub Events

  • There’s a ton
slide-78
SLIDE 78

GitHub Events

  • There’s a ton
slide-79
SLIDE 79
slide-80
SLIDE 80
slide-81
SLIDE 81

Example: Announce Issue Creation

slide-82
SLIDE 82

Announce Issue Creation

Developer GitHub Webhook Receiver

Create Issue Issue Event

slide-83
SLIDE 83
slide-84
SLIDE 84
slide-85
SLIDE 85

Example: Build Every Commit

slide-86
SLIDE 86
slide-87
SLIDE 87
slide-88
SLIDE 88

Build Every Commit

Developer GitHub CI Server

Commit Push Event Build Starts Update Status - Pending Update Status - Success Notifications

slide-89
SLIDE 89

Example: Deployment

slide-90
SLIDE 90
slide-91
SLIDE 91
slide-92
SLIDE 92
slide-93
SLIDE 93

Deployment

Developer GitHub Deploy Server

Create Deployment Deployment Event Deploy Starts Deployment Status - Started Deployment Status - Finished Notifications

slide-94
SLIDE 94
slide-95
SLIDE 95

Example: Signoff

slide-96
SLIDE 96
slide-97
SLIDE 97
slide-98
SLIDE 98

Signoff

Developer GitHub QA Team

Create pull request Notification Testing

Comment !

Notifications Issue Comment Webhook

Deployment Server

Close Deploy Comment

slide-99
SLIDE 99

198 API Endpoints

slide-100
SLIDE 100

21 WebHook Events

slide-101
SLIDE 101

Buy instead of Build?

  • github/hubot - Chat robot. http://ciel.im/2013/11/21/hubot-heroku-hipchat/
  • atmos/heaven - GitHub-style deployments to Heroku
  • github/janky - Hubot integration for Jenkins
  • Travis CI, Circle CI, TeamCity, many more - CI/CD as a service
  • travis-ci/dpl - Library for deploying to a number of providers
  • sprint.ly - GitHub-integrated sprinting
slide-102
SLIDE 102
slide-103
SLIDE 103

Thanks!

questions?