utilizing svn jenkins to manage multi-line development to deployments

41
Andrew Brandt, Jerome Russ & Teresa Garcia-Bovenmyer Consultant, IT App Development | Specialist, IT App Development | Sr. Developer, IT Applications [email protected] | [email protected] | [email protected] @BrandtTech | @RussJdr | @Tgarciab Utilizing SVN & Jenkins to Manage Multi-line Development to Deployments

Upload: teresa-garcia-bovenmyer-

Post on 12-Apr-2017

39 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Andrew Brandt, Jerome Russ & Teresa Garcia-Bovenmyer

Consultant, IT App Development | Specialist, IT App Development | Sr. Developer, IT Applications

[email protected] | [email protected] | [email protected]

@BrandtTech | @RussJdr | @Tgarciab

Utilizing SVN & Jenkins to Manage Multi-line Development to Deployments

Page 2: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Forward-Looking Statements

Statement under the Private Securities Litigation Reform Act of 1995:

This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any

of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking

statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or

service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for

future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts

or use of our services.

The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our

service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth,

interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible

mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our

employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com

products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of

salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most

recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information

section of our Web site.

Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not

be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available.

Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.

Page 3: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Nationwide P&C Agile

Team/Project StructuresAndrew Brandt

Page 4: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Nationwide P&C Team Structures

Requirements ETL Developers SF Developers Testers

Maintenance Line 1 1 2 1

Build Line 1 1 2 5 3

Flex Build Line 2 1 2 5 2

Flex Build Line 3 1 1 3 0

System Testing 0 0 0 3

Breakout

Source: placeholder

Page 5: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

2013

Exclusive Agents

Goal Planning

Production Tracking

Separated Data

Dedicated Sales

Read-Only Org Security

Underwriting Focus

Policy/Quote Tracking

Cross-brand capabilities

Policyholder centric

Cross-org Security

Independent Insurance

Stackable with Allied

Account separation

Separated Sources

Open Org Security

2014 Fall 2015 Winter 2015

Independent Insurance

Automated Contracting

Goal Planning

Production Tracking

Dedicated Sales

Open Org Security

Salesforce Evolution – Nationwide Property & Casualty

Page 6: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

2016

Unifying processes for:

Accounts

Contacts

Contracting

Reporting

Prospecting

Data Sourcing

2017

Cross-channel

Collaborative Accounts

Unified Sales Staff

Closed org Security

Open Org Sharing Rules

Salesforce Evolution – Nationwide Property & Casualty

Page 7: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Nationwide P&C SVN

Branching StrategyAndrew Brandt

Page 8: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Release CycleMid – Large Project build

Development Merge & Smoke Test System Test Freeze

2 – 8+ weeks ~4 weeks ~3 weeks ~2 weeks

Page 9: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

DEV 1

(Local Copy)

DEV 2

(Local Copy)

DEV 3

(Local Copy)

Build Line

Testing Box

Flex Build

Testing Box

Btest

Box

Build Line Feature

Flex Build Feature

SUBVERSION TRUNK

(CORE WORKING COPY)

ALWAYS NEAR-STABLE FOR RELEASE BRANCH CREATION

Release Branch

(Post-Deploy)

Release Branch

(4 Weeks Out)

New Release Tag

Created 1 week out

Maintenance

Line

Pre-Test

ENVIRONMENT

Training

System Testing

(HOTFIX)

FULL SANDBOX

System Testing

(TEST)

FULL SANDBOX

Production

Jenkins

(15 min)Eclipse Sync

(Commit)

Je

nkin

s

(15

min

)

Je

nkin

s

(15

min

)

Nig

htly

Merg

e

Nig

htly

Merg

e

Sch

ed

ule

d

Re

-Inte

gra

te

Sch

ed

ule

d

Re

-Inte

gra

te

SVN TO SFDC

(Jenkins Manual)

ST

FIX

ES

SV

N T

O S

FD

C

(Jenkin

s M

anual)

SV

N T

O S

FD

C

(Jenkin

s M

anual)

SVN & SFDC Branch Merge

Process Flow

Page 10: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Team-level Development

& ValidationJerome Russ

Page 11: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

The Setup!

DEV 1

(Local Copy)

DEV 2

(Local Copy)

DEV 3

(Local Copy)

Build Line Feature

Eclipse Sync (Commit)

Page 12: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Let’s add a Custom Field, FLS, and Layout Change!

Page 13: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

We need to pull down our changes!

Page 14: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

What did we change?

Account Object

Account Layouts

…and?

Page 15: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Remember our goal!

DEV 1

(Local Copy)

DEV 2

(Local Copy)

DEV 3

(Local Copy)

Build Line Feature

Eclipse Sync (Commit)

Page 16: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Let’s Deploy Some Stuff!

Page 17: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Update Org!

Page 18: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Let’s commit those changes!

Page 19: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Meanwhile, another developer…

Destructive Changes?

Page 20: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Advantages of this approach:

Anybody can make the change in Salesforce

Work in progress is easily identified Project merges go smoother

Branch is always deployablePrinciples are technology agnostic

Add automated steps to deployments

Page 21: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Code Merge ProcessesTeresa Garcia-Bovenmyer

Page 22: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

What is Code Merging?

A Code Merge a process that allows the user to move a

pre-committed work from one branch to another

Page 23: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Benefits of Code Merging

• Provides a greater span of

control over the content

you are merging into a

Branch

• Developer can Merge a

committed work into

multiple Branches

• Reduces overall effort for

the Developers/Line

• Helps to ensure that you

are not forgetting already

merged components

• Great way to Deploy entire

projects into a new branch

or a release branch

Page 24: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Downsides of Code Merging

• Eclipse comparisons are

done on a line # basis and

not a component basis

• Items will not always line up

• Manually resolving

conflicts can be tedious

• Have to make sure you are

only introducing your

changes

• Large Code Merges can be

very time consuming

• It is important to outline

what you will be merging

prior to a Large code

merge

Page 25: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Code Merge Demo

Page 26: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

System Testing

StrategyTeresa Garcia-Bovenmyer

Page 27: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Unit Testing

• The line testing

resource retests the

card to validate the

scenarios

• Automation testing

begins on the card at

this time

• Internal group of

Business Users who will

validate work & raise

defects when needed

• 4 weeks prior to

Release

• Begins once the

Release Branch has

been created & a given

project merged

• 4 weeks prior to

Release

Iterative Testing & Automation

User Acceptance

TestingSystems Test

• The 1st line of testing is

undertaken by the

Developer who

performed the work

• Developer will Unit Test

in private development

box & any subsequent

branches

Testing Strategy

Page 28: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Automation vs. Manual Testing

Manual Testing

• Scenarios are created for each card

• Tester can Create or use Pre-Existing Data

• Lower short term cost

• Can be more flexible

Automated Testing

• Cards Scripts need to be coded in Ruby

• All data needs to be created by Tester

• Scripts can be used for Regression Testing

• Script Runs can be Scheduled

• Can be more expensive

Page 29: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Issue Identified & Defect is logged

Status = New

Developer begins work on Defect

Status = Open

Code is fixed but not moved to ST environment

Status = Fixed

System Testing starts Validation of defect Status = Retest

Validation Passed

Exists in Production?

System Tester update the defect with comments

Status = Awaiting Migration

Communicates to the developer & assigns defect back to the developer

Status = Reopen

Tester update the defect with comments

Status = Closed

No

Yes

No

Yes

Production Validation Successful

QA Defect Life Cycle Flow

Page 30: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Deployment StrategyAndrew Brandt

Page 31: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

System Testing PreparationJenkins – Production Build

Page 32: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

System Testing PreparationJenkins – Production Build

Page 33: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

System Testing PreparationJenkins – Production Build

Page 34: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

3-5 hours later……

Page 35: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Release Week ValidationJenkins – Production Build

Page 36: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Release Week ValidationJenkins – Production Build

Page 37: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Release Day

Page 38: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Release Week ValidationJenkins – Production Build

Page 39: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

10 minutes later……

Page 40: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Release Week ValidationJenkins – Production Build

Page 41: Utilizing SVN  Jenkins to Manage Multi-line Development to Deployments

Thank Y u