Presentation is loading. Please wait.

Presentation is loading. Please wait.

Jenkins User Conference San Francisco, Oct 2nd 2011 Continuous Deployment with Gerrit and Jenkins R. Tyler Croy Lookout, Inc.

Similar presentations


Presentation on theme: "Jenkins User Conference San Francisco, Oct 2nd 2011 Continuous Deployment with Gerrit and Jenkins R. Tyler Croy Lookout, Inc."— Presentation transcript:

1 Jenkins User Conference San Francisco, Oct 2nd 2011 Continuous Deployment with Gerrit and Jenkins R. Tyler Croy Lookout, Inc. http://mylookout.com/about/j obs

2 Jenkins User Conference San Francisco, Oct 2nd 2011 Who is this guy?

3 Jenkins User Conference San Francisco, Oct 2nd 2011 I work here

4 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/114

5 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/115

6 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/116

7 Jenkins User Conference San Francisco, Oct 2nd 2011 Brief overview of Continuous Deployment Meet Gerrit A Basic Commit-to-Deploy Pipeline Multiple branches with Gerrit + Jenkins The Human Factor Pro-tips/best practices

8 Jenkins User Conference San Francisco, Oct 2nd 2011 Continuous Deployment

9 Jenkins User Conference San Francisco, Oct 2nd 2011 What it isn't

10 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1110

11 Jenkins User Conference San Francisco, Oct 2nd 2011 What it is

12 Jenkins User Conference San Francisco, Oct 2nd 2011 Who is using it?

13 Jenkins User Conference San Francisco, Oct 2nd 2011 Why Code Review?

14 Jenkins User Conference San Francisco, Oct 2nd 2011 Why Code Review?

15 Jenkins User Conference San Francisco, Oct 2nd 2011 Meet Gerrit

16 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1116

17 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1117 As a code review tool

18 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1118 As a code review tool

19 Jenkins User Conference San Francisco, Oct 2nd 2011 As a Git repository server ~ % git checkout -b change-4 Switched to a new branch 'change-4' ~ % git fetch gerrit refs/changes/04/4/1 From gerrit:ttyclock * branch refs/changes/04/4/1 - > FETCH_HEAD ~ % git cherry-pick FETCH_HEAD Finished one cherry-pick. [change-4 1d4351c] Greatly improve the stability of tty-clock 1 files changed, 3 insertions(+), 0 deletions(-) ~ %

20 Jenkins User Conference San Francisco, Oct 2nd 2011 As a collaboration tool

21 Jenkins User Conference San Francisco, Oct 2nd 2011 As a collaboration tool

22 Jenkins User Conference San Francisco, Oct 2nd 2011 As a collaboration tool

23 Jenkins User Conference San Francisco, Oct 2nd 2011 As a collaboration tool

24 Jenkins User Conference San Francisco, Oct 2nd 2011 Code Review “Points”

25 Jenkins User Conference San Francisco, Oct 2nd 2011 Code Review “Points”

26 Jenkins User Conference San Francisco, Oct 2nd 2011 Changes in Gerrit Change 123 Patchset 1 Patchset 2 Commit 41dbe5 Commit cdeb34

27 Jenkins User Conference San Francisco, Oct 2nd 2011 Changes in Gerrit Change 123 Patchset 1 Patchset 2 Commit 41dbe5 Commit cdeb34

28 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1128

29 Jenkins User Conference San Francisco, Oct 2nd 2011 Developer Workflow

30 Jenkins User Conference San Francisco, Oct 2nd 2011 The Gerrit Flow gerritupstream dev-adev-b

31 Jenkins User Conference San Francisco, Oct 2nd 2011 Flow of changes Create Local Branch % git checkout -b topic-branch work Push to Gerrit % git push gerrit HEAD:refs/for/master

32 Jenkins User Conference San Francisco, Oct 2nd 2011 Flow of changes Create Local Branch % git checkout -b topic-branch work Push to Gerrit % git push gerrit HEAD:refs/for/master

33 Jenkins User Conference San Francisco, Oct 2nd 2011 Flow of changes Create Local Branch work Push to Gerrit Review Fix commit Upstream repo rejecte d approved/ submitted rebased!

34 Jenkins User Conference San Francisco, Oct 2nd 2011 Flow of changes Create Local Branch work Push to Gerrit Review Fix commit Upstream repo rejecte d approved/ submitted rebased!

35 Jenkins User Conference San Francisco, Oct 2nd 2011 Your development workflow in commands git checkout -b local-topic-branch work work work git rebase -i upstream/master # fix up commits git push gerrit HEAD:refs/for/master Create new commits based on reviews git rebase -i upstream/master # squash up git push gerrit HEAD:refs/for/master

36 Jenkins User Conference San Francisco, Oct 2nd 2011 REBASE IS SCARY (but necessary)

37 Jenkins User Conference San Francisco, Oct 2nd 2011 How it works AB AB DE C upstream/master local-topic-branch % git rebase upstream/master

38 Jenkins User Conference San Francisco, Oct 2nd 2011 How it works AB AB DE C upstream/master local-topic-branch C

39 Jenkins User Conference San Francisco, Oct 2nd 2011 How it works AB AB DE C upstream/master local-topic-branch C % git rebase -i upstream/master Change-Id: Icde43 Change-Id: I51bdc2

40 Jenkins User Conference San Francisco, Oct 2nd 2011 ~ % git rebase -i origin/master pick e59df21 Greatly improve the stability of tty-clock squash 6c1ffe1 Fix some whitespace [detached HEAD 785692b] Greatly improve the stability of tty-clock 1 files changed, 2 insertions(+), 0 deletions(-) Successfully rebased and updated refs/heads/change-4. ~ %

41 Jenkins User Conference San Francisco, Oct 2nd 2011 How it works AB AB DE C upstream/master local-topic-branch C Change-Id: Icde43

42 Jenkins User Conference San Francisco, Oct 2nd 2011 How it works AB AB DE C upstream/master local-topic-branch C Change-Id: Icde43

43 Jenkins User Conference San Francisco, Oct 2nd 2011 Gerrit Trigger Plugin

44 Jenkins User Conference San Francisco, Oct 2nd 2011 Creating a role account ~ % ssh gerrit gerrit create-account

45 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1145 gerrit Jenkins Streamed events over SSH Commands sent over SSH

46 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1146

47 Jenkins User Conference San Francisco, Oct 2nd 2011 A simple pipeline

48 Jenkins User Conference San Francisco, Oct 2nd 2011 Creating a Jenkins “verifier” job

49 Jenkins User Conference San Francisco, Oct 2nd 2011 Creating a Jenkins “verifier” job

50 Jenkins User Conference San Francisco, Oct 2nd 2011 Creating a Jenkins “verifier” job

51 Jenkins User Conference San Francisco, Oct 2nd 2011 Create Local Branch work Push to Gerrit Review Fix commit Upstream repo Flow of changes Verification Job Build Fails! (-1, Not Verified) Success! (+1, Verified)

52 Jenkins User Conference San Francisco, Oct 2nd 2011 Create Local Branch work Push to Gerrit Review Fix commit Upstream repo Flow of changes Verification Job Build Fails! (-1, Not Verified) Success! (+1, Verified)

53 Jenkins User Conference San Francisco, Oct 2nd 2011 Deployment gerritupstream dev-adev-b Release Build Release Test Release Deploy

54 Jenkins User Conference San Francisco, Oct 2nd 2011 Deployment upstream Release Build Release Test Release Deploy Downstream Job Production machines rsync/ cap/ scp/ mvn

55 Jenkins User Conference San Francisco, Oct 2nd 2011 Deployment upstream Release Build Release Test Release Deploy Downstream Job Production machines rsync/ cap/ scp/ mvn

56 Jenkins User Conference San Francisco, Oct 2nd 2011 Multiple Branches

57 Jenkins User Conference San Francisco, Oct 2nd 2011 Creating the branches in Gerrit

58 Jenkins User Conference San Francisco, Oct 2nd 2011 Creating the branches in Gerrit ~ % git push gerrit release-1.0

59 Jenkins User Conference San Francisco, Oct 2nd 2011 From the developer point of view ~ % git checkout -b relfix –track upstream/release-1.0 ~ % # work work work ~ % git add/commit ~ % git push gerrit HEAD:refs/for/release- 1.0

60 Jenkins User Conference San Francisco, Oct 2nd 2011 From the Jenkins point of view

61 Jenkins User Conference San Francisco, Oct 2nd 2011 From the Jenkins point of view

62 Jenkins User Conference San Francisco, Oct 2nd 2011

63 Jenkins User Conference San Francisco, Oct 2nd 2011 The Human Factor

64 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with changes “in review”

65 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with “in-review” changes ~ % git checkout -b topic-with-17 ~ % git fetch gerrit refs/changes/17/17/1 ~ % git cherry-pick FETCH_HEAD ~ % # work work commit work work commit

66 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with “in-review” changes AB C1 AB DE Developer 1 Developer 2

67 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with “in-review” changes AB C2 AB C1DE Developer 1 Developer 2

68 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with “in-review” changes AB AB C1DE Upstream Developer 2 BC2

69 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with “in-review” changes ~ $ git rebase gerrit/master First, rewinding head to replay your work on top of it... Applying: Unused variable Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging ttyclock.c CONFLICT (content): Merge conflict in ttyclock.c Failed to merge in the changes. Patch failed at 0001 Unused variable When you have resolved this problem run "git rebase -- continue". If you would prefer to skip this patch, instead run "git rebase --skip". To restore the original branch and stop rebasing run "git rebase --abort". ~ $ git rebase --skip HEAD is now at edff388 Unused variable Applying: Local change ~ $

70 Jenkins User Conference San Francisco, Oct 2nd 2011 Working with “in-review” changes AB AB DE Upstream Developer 2 C2

71 Jenkins User Conference San Francisco, Oct 2nd 2011 Picking up changes AB C1 AB Developer 1 Developer 2

72 Jenkins User Conference San Francisco, Oct 2nd 2011 Picking up changes AB C1 AB C2 Developer 1 Developer 2

73 Jenkins User Conference San Francisco, Oct 2nd 2011 Performing manual verification by QA

74 Jenkins User Conference San Francisco, Oct 2nd 2011 Manual verification

75 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1175 Kick-off deployments with the Promoted Builds plugin

76 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1176

77 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1177

78 Jenkins User Conference San Francisco, Oct 2nd 2011 Pro Tips

79 Jenkins User Conference San Francisco, Oct 2nd 2011 Use “squash” or “fixup” to condense changes

80 Jenkins User Conference San Francisco, Oct 2nd 2011 Create per-topic/ticket local branches for clearer isolation of work

81 Jenkins User Conference San Francisco, Oct 2nd 2011 Multiple jobs with the same trigger criteria

82 Jenkins User Conference San Francisco, Oct 2nd 2011 Investigate the EC2 plugin for burstable testing capacity

83 Jenkins User Conference San Francisco, Oct 2nd 2011 Gotchas and Errata

84 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1184

85 Jenkins User Conference San Francisco, Oct 2nd 2011 “Dependencies” in Gerrit

86 Jenkins User Conference San Francisco, Oct 2nd 2011 “Dependencies” in Gerrit

87 Jenkins User Conference San Francisco, Oct 2nd 2011 “Dependencies” in Gerrit

88 Jenkins User Conference San Francisco, Oct 2nd 2011 Final Thoughts

89 Jenkins User Conference San Francisco, Oct 2nd 2011 Final Thoughts

90 Jenkins User Conference San Francisco, Oct 2nd 2011 Final Thoughts

91 Jenkins User Conference San Francisco, Oct 2nd 2011 Final Thoughts

92 Jenkins User Conference San Francisco, Oct 2nd 2011 Final Thoughts

93 Jenkins User Conference San Francisco, Oct 2nd 2011 Thank You To Our Sponsors

94 Jenkins User Conference San Francisco, Oct 2nd 2011 10/2/1194 Q&A and Links Gerrit: http://code.google.com/p/gerrithttp://code.google.com/p/gerrit Gerrit Trigger Plugin: http://urlenco.de/oyhmac http://urlenco.de/oyhmac These slides (w/ notes): http://urlenco.de/vhqjl http://urlenco.de/vhqjl


Download ppt "Jenkins User Conference San Francisco, Oct 2nd 2011 Continuous Deployment with Gerrit and Jenkins R. Tyler Croy Lookout, Inc."

Similar presentations


Ads by Google