continuous deployment with gerrit and jenkins

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

Upload: keziah

Post on 05-Jan-2016

85 views

Category:

Documents


4 download

DESCRIPTION

Continuous Deployment with Gerrit and Jenkins. R. Tyler Croy Lookout, Inc. http://mylookout.com/about/jobs. Who is this guy?. I work here. Brief overview of Continuous Deployment Meet Gerrit A Basic Commit-to-Deploy Pipeline Multiple branches with Gerrit + Jenkins The Human Factor - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Continuous Deployment with Gerrit and Jenkins

R. Tyler CroyLookout, Inc.http://mylookout.com/about/

jobs

Page 2: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Who is this guy?

Page 3: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

I work here

Page 4: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 4

Page 5: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 5

Page 6: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 6

Page 7: Continuous Deployment with Gerrit and Jenkins

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

Page 8: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Continuous Deployment

Page 9: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

What it isn't

Page 10: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 10

Page 11: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

What it is

Page 12: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Who is using it?

Page 13: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Why Code Review?

Page 14: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Why Code Review?

Page 15: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Meet Gerrit

Page 16: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 16

Page 17: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 17

As a code review tool

Page 18: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 18

As a code review tool

Page 19: Continuous Deployment with Gerrit and Jenkins

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(-)

~ %

Page 20: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

As a collaboration tool

Page 21: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

As a collaboration tool

Page 22: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

As a collaboration tool

Page 23: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

As a collaboration tool

Page 24: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Code Review “Points”

Page 25: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Code Review “Points”

Page 26: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Changes in Gerrit

Change 123

Patchset 1

Patchset 2

Commit 41dbe5

Commit cdeb34

Page 27: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Changes in Gerrit

Change 123

Patchset 1

Patchset 2

Commit 41dbe5

Commit cdeb34

Page 28: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 28

Page 29: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Developer Workflow

Page 30: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

The Gerrit Flow

gerrit upstream

dev-adev-b

Page 31: Continuous Deployment with Gerrit and Jenkins

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

Page 32: Continuous Deployment with Gerrit and Jenkins

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

Page 33: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Flow of changes

Create Local

Branch

work

Push to

GerritReview

Fix commit

Upstream repo

rejected

approved/submitted

rebased!

Page 34: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Flow of changes

Create Local

Branch

work

Push to

GerritReview

Fix commit

Upstream repo

rejected

approved/submitted

rebased!

Page 35: Continuous Deployment with Gerrit and Jenkins

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

Page 36: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

REBASE IS SCARY(but necessary)

Page 37: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

How it works

A B

A B

D E

C

upstream/master

local-topic-branch% git rebase upstream/master

Page 38: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

How it works

A B

A B

D E

C

upstream/master

local-topic-branch

C

Page 39: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

How it works

A B

A B

D E

C

upstream/master

local-topic-branch

C

% git rebase -i upstream/master

Change-Id: Icde43 Change-Id: I51bdc2

Page 40: Continuous Deployment with Gerrit and Jenkins

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.

~ %

Page 41: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

How it works

A B

A B

DE

C

upstream/master

local-topic-branch

C

Change-Id: Icde43

Page 42: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

How it works

A B

A B

DE

C

upstream/master

local-topic-branch

C

Change-Id: Icde43

Page 43: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Gerrit Trigger Plugin

Page 44: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Creating a role account

~ % ssh gerrit gerrit create-account

Page 45: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 45

gerrit

Jenkins

Streamed eventsover SSH

Commands sentover SSH

Page 46: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 46

Page 47: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

A simple pipeline

Page 48: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Creating a Jenkins “verifier” job

Page 49: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Creating a Jenkins “verifier” job

Page 50: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Creating a Jenkins “verifier” job

Page 51: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Create Local

Branch

work

Push to

GerritReview

Fix commit

Upstream repo

Flow of changes

Verification Job

Build Fails!(-1, Not Verified)

Success!(+1, Verified)

Page 52: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Create Local

Branch

work

Push to

GerritReview

Fix commit

Upstream repo

Flow of changes

Verification Job

Build Fails!(-1, Not Verified)

Success!(+1, Verified)

Page 53: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Deployment

gerrit upstream

dev-adev-b

Release Build

Release Test

Release Deploy

Page 54: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Deployment

upstream

Release Build

Release Test

Release Deploy

Downstream Job

Downstream Job

Production machines

rsync/cap/scp/mvn

Page 55: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Deployment

upstream

Release Build

Release Test

Release Deploy

Downstream Job

Downstream Job

Production machines

rsync/cap/scp/mvn

Page 56: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Multiple Branches

Page 57: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Creating the branches in Gerrit

Page 58: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Creating the branches in Gerrit

~ % git push gerrit release-1.0

Page 59: Continuous Deployment with Gerrit and Jenkins

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

Page 60: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

From the Jenkins point of view

Page 61: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

From the Jenkins point of view

Page 62: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Page 63: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

The Human Factor

Page 64: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Working with changes “in review”

Page 65: Continuous Deployment with Gerrit and Jenkins

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

Page 66: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Working with “in-review” changes

A B

C1

A B

C1 D E

Developer 1

Developer 2

Page 67: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Working with “in-review” changes

A B

C2

A B

C1 D E

Developer 1

Developer 2

Page 68: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Working with “in-review” changes

A B

A B

C1 D E

Upstream

Developer 2

B C2

Page 69: Continuous Deployment with Gerrit and Jenkins

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

~ $

Page 70: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Working with “in-review” changes

A B

A B

D E

Upstream

Developer 2

C2

C2

Page 71: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Picking up changes

A B

C1

A B

C1

Developer 1

Developer 2

Page 72: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Picking up changes

A B

C1

A B

C2

Developer 1

Developer 2

Page 73: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Performing manual verification by QA

Page 74: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Manual verification

Page 75: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 75

Kick-off deployments with the Promoted Builds plugin

Page 76: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 76

Page 77: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 77

Page 78: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Pro Tips

Page 79: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Use “squash” or “fixup” to condense changes

Page 80: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Create per-topic/ticket local branches for clearer isolation of work

Page 81: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Multiple jobs with the same trigger criteria

Page 82: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Investigate the EC2 plugin for burstable testing capacity

Page 83: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Gotchas and Errata

Page 84: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 84

Page 85: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

“Dependencies” in Gerrit

Page 86: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

“Dependencies” in Gerrit

Page 87: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

“Dependencies” in Gerrit

Page 88: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Final Thoughts

Page 89: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Final Thoughts

Page 90: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Final Thoughts

Page 91: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Final Thoughts

Page 92: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Final Thoughts

Page 93: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

Thank You To Our Sponsors

Page 94: Continuous Deployment with Gerrit and Jenkins

Jenkins User Conference San Francisco, Oct 2nd 2011

10/2/11 94

Q&A and Links

Gerrit: http://code.google.com/p/gerrit Gerrit Trigger Plugin:

http://urlenco.de/oyhmac These slides (w/ notes):

http://urlenco.de/vhqjl