74
the best way to build and ship soware How GitHub uses GitHub to develop and deploy GitHub Johannes Nicolai a @jonico - ! [email protected] @

How Github uses Github to develop and deploy GitHub

Embed Size (px)

Citation preview

Page 1: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

How GitHub uses GitHub to develop and deploy GitHub

Johannes Nicolai a @jonico - ! [email protected]

@

Page 2: How Github uses Github to develop and deploy GitHub

"http://www.wired.com/2012/02/github-2/ Photo : Ariel Zambelich/Wired

Page 3: How Github uses Github to develop and deploy GitHub

"

Page 4: How Github uses Github to develop and deploy GitHub

How software is built

GitHub Facts

4

"

FOUNDED

2008

USERS

18M+

PROJECTS

37M

MONTHLY

VISITORS

40M

CORPORATE CUSTOMERS

67k+

UNIVERSITIES

1000+

GLOBAL RANK

51

FORTUNE100

53%

OFFICES

San Francisco Tokyo, Amsterdam, Boulder

Page 5: How Github uses Github to develop and deploy GitHub

How software is built 5

#GitHub Enterprise - Run your own GitHub behind your FW

Page 6: How Github uses Github to develop and deploy GitHub

"

What’s the secret?

Page 7: How Github uses Github to develop and deploy GitHub

How software is built 7

#

OPEN SOURCE

LEADERS

SOFTWARE

SPECIALISTS

FORWARD THINKING

ENTERPRISES

How the world builds software

Page 8: How Github uses Github to develop and deploy GitHub

the best way to build and ship software8

"

CONTINUOUS DELIVERY

The (very shorten) recipe

$

ASYNCHRONOUS COMMUNICATION%

COMMON PHILOSOPHY&

CHATOPS'

Page 9: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

The Zen of GitHub

9

"

• Responsive is better than fast • It’s not fully shipped until it’s fast • Anything added dilutes everything else • Practicality beats purity • Approachable is better than simple • Mind your words, they are important • Speak like a human • Half measures are as bad as nothing at all • Encourage flow • Non-blocking is better than blocking • Favor focus over features • Avoid administrative distraction • Design for failure • Keep it logically awesome

Page 10: How Github uses Github to develop and deploy GitHub

the best way to build and ship software10

"

CONTINUOUS DELIVERY

The (very shorten) recipe

$

ASYNCHRONOUS COMMUNICATION%

COMMON PHILOSOPHY&

CHATOPS'

Page 11: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Page 12: How Github uses Github to develop and deploy GitHub

"GitHub Flow

Page 13: How Github uses Github to develop and deploy GitHub

Create a Feature Branch

Page 14: How Github uses Github to develop and deploy GitHub

Add commits

Page 15: How Github uses Github to develop and deploy GitHub

Open a Pull Request

Page 16: How Github uses Github to develop and deploy GitHub

Discuss and Review Code

Page 17: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Get CI status back in Pull Request

17

"

Page 18: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Peer code reviews in Pull Request

18

"

Page 19: How Github uses Github to develop and deploy GitHub

Ship

Page 20: How Github uses Github to develop and deploy GitHub

Merge with master

Page 21: How Github uses Github to develop and deploy GitHub

Ship

Page 22: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deployment API

22

"

Page 23: How Github uses Github to develop and deploy GitHub

the best way to build and ship software23

"

CONTINUOUS DELIVERY

The (very shorten) recipe

$

ASYNCHRONOUS COMMUNICATION%

COMMON PHILOSOPHY&

CHATOPS'

Page 24: How Github uses Github to develop and deploy GitHub

""hubot

Page 25: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot

25

"

Page 26: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot

26

"

Page 27: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

What do you mean, “devops”?

27

"

Page 28: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

What do you mean, “devops”?

28

"

HTTP://WWW.EWEEK.COM/ENTERPRISE-APPS/SLIDESHOWS/DEVOPS-5-SIGNS-ENTERPRISES-NEED-TO-UNITE-THE-DEV-AND-OPS-CAMPS.HTML

Page 29: How Github uses Github to develop and deploy GitHub

the way people build software 29

'CHATOPS AS THE CULTURAL GLUE

{) { *

'+ DevOps

APPLICATION AUTOMATION INFRASTRUCTURE AUTOMATION

Page 30: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Page 31: How Github uses Github to develop and deploy GitHub

the best way to build and ship software31

"

CONTINUOUS DELIVERY

The (very shorten) recipe

$

ASYNCHRONOUS COMMUNICATION%

COMMON PHILOSOPHY&

CHATOPS'

Page 32: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deployments to production

32

"

Page 33: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Where Can I Deploy?

33

"

Page 34: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deploy to test

34

"

Page 35: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Get deployment status back in PR

35

"

Page 36: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deploy to production

36

"

Page 37: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deploy to production - canary

37

"

Page 38: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deploy to production - canary

38

"

Page 39: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deploy to production - everywhere

39

"

Page 40: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Deployment confidence

40

"

Page 41: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Haystack

41

"

Page 42: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot has your back

42

"

Page 43: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot has your back

43

"

Page 44: How Github uses Github to develop and deploy GitHub

Merge with master

Page 45: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Wrap it up

45

"

Page 46: How Github uses Github to develop and deploy GitHub

the best way to build and ship software46

"

CONTINUOUS DELIVERY

The (very shorten) recipe

$

ASYNCHRONOUS COMMUNICATION%

COMMON PHILOSOPHY&

CHATOPS'

Page 47: How Github uses Github to develop and deploy GitHub

"Bonus

Page 48: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Isn’t that still too risky???

48

"

Page 49: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Feature Toggles

49

"

Page 50: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Feature Toggles

50

"

Page 51: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Feature Toggles

51

"

Page 52: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Science

52

"

Page 53: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Science

53

"

Page 54: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Science

54

"

Page 55: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Science

55

"

Page 56: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

'Hubot deployed on Heroku

56

Page 57: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

'Hubot deployed on Heroku

57

Page 58: How Github uses Github to develop and deploy GitHub

the best way to build and ship software 58

"

Page 59: How Github uses Github to develop and deploy GitHub

the best way to build and ship software 59

"

Page 60: How Github uses Github to develop and deploy GitHub

the best way to build and ship software 60

"

Page 61: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

References used within the presentation

61

"

• https://github.com/blog/2093-how-the-services-team-uses-github • https://github.com/blog/1124-how-we-use-pull-requests-to-build-github • https://github.com/blog/1939-how-github-uses-github-to-document-github • https://www.youtube.com/watch?v=YIpNpptGX6Q • https://guides.github.com/introduction/flow/ • https://developer.github.com/v3/repos/deployments/ • http://githubengineering.com/deploying-branches-to-github-com/ • https://www.youtube.com/watch?v=NST3u-GjjFw • http://githubengineering.com/scientist/ • http://johnnunemaker.com/flipper/ • https://enterprise.github.com • https://paypal.github.io/InnerSourceCommons/ • https://github.com/blog/2079-managing-large-files-with-git-lfs

Page 62: How Github uses Github to develop and deploy GitHub

"Questions?

Page 63: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Repo activity in the chat room

63

"

Page 64: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Page 65: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot

65

"

Page 66: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot

66

"

Page 67: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Resources

67

"

Page 68: How Github uses Github to develop and deploy GitHub
Page 69: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Git

69

"

• Started by Linus Torvalds 2005 (search “torvalds git” on youtube)

• Easy branching and merging - content oriented, remembers origin

• Small and fast - local operations, smaller repos

• Distributed - VCS on my laptop, full copy incl. history

• Data assurance - sha1, gpg

• Staging area - crafted, meaningful commits

• Free and open source - did you read the first line of this slide?

Page 70: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

An ideal patch flow

70

"

(0) YOU COME UP WITH AN ITCH. YOU CODE IT UP.

(1) SEND IT TO THE LIST AND CC PEOPLE WHO MAY NEED TO KNOW ABOUT THE CHANGE.

(2) YOU GET COMMENTS AND SUGGESTIONS FOR IMPROVEMENTS. YOU MAY EVEN GET THEM IN A "ON

TOP OF YOUR CHANGE" PATCH FORM.

(3) POLISH, REFINE, AND RE-SEND TO THE LIST AND THE PEOPLE WHO SPEND THEIR TIME TO IMPROVE

YOUR PATCH. GO BACK TO STEP (2).

(4) THE LIST FORMS CONSENSUS THAT THE LAST ROUND OF YOUR PATCH IS GOOD. SEND IT TO THE

MAINTAINER AND CC THE LIST.

(5) A TOPIC BRANCH IS CREATED WITH THE PATCH AND IS MERGED TO ‘NEXT', AND COOKED FURTHER

AND EVENTUALLY GRADUATES TO ‘MASTER'.

- HTTPS://GITHUB.COM/GIT/GIT/BLOB/MASTER/DOCUMENTATION/SUBMITTINGPATCHES

Page 71: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot has your back

71

"

Page 72: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Hubot has your back

72

"

Page 73: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Continuous Integration

73

"

Page 74: How Github uses Github to develop and deploy GitHub

the best way to build and ship software

Wrap it up

74

"