managing software product versioning with gitflow, vsts and atlassian sourcetree

25
ADMIR TUZOVIC | CTO & CO-FOUNDER | APP IMPACT Managing software product versioning with Gitflow, VSTS and SourceTree

Upload: bosnia-agile

Post on 22-Jan-2018

183 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

ADMIR TUZOVIC | CTO & CO-FOUNDER | APP IMPACT

Managing software product versioning

with Gitflow, VSTS and SourceTree

Page 2: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

AboutAdmir Tuzović

App Impact d.o.o. Sarajevo

CTO & Co-Founder

Conference speaker (mostly on MS tech):

MS NetWork, Sinergija, Windays, NTK, KulenDayz, MS Community, ATD, Tarabica,…

Page 3: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Agenda

Versioning

Repositories

GIT Flow

Tooling

Collaboration

Page 4: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

VersioningDefining your own product versioning strategy.

Page 5: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Semantic Versioning (SEMVER) 2.0.0

Authored by Tom Preston-Werner

Inventor of Gravatar

Co-founder of GitHub

Available at: http://semver.org/

@mojombo

Page 6: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

MAJOR.MINOR.PATCH

Backwards-incompatible API changes (also known as “breaking changes”).

Examples:

• Data migration required after update,

• Mobile apps must be re-published to marketplaces,

• 3rd party libraries / systems must be updated to work,

• User interfaces have been changed/moved significantly,

• Security model has been redesigned, …

Must dos:

• Plan carefully,

• Test thoroughly,

• Backup,

• Prepare rollback,

• Announce downtime,

• Pray (or at least pretend to)!

Page 7: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

MAJOR.MINOR.PATCH

New features that are backwards-compatible.

Examples of non-breaking changes:

• New reports on administration,

• Additional data on service methods (i.e. short description on something),

• New non-required columns on database tables, …

External apps / libraries / systems SHOULD be updated to take advantage of new

features but are NOT REQUIRED to do so.

Page 8: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

MAJOR.MINOR.PATCH

Backwards-compatible bug fixes.

Examples:

• Hotfix (critical fix that was supposed to be delivered yesterday),

• Next feature release will take some time and clients are asking for a small non-

functional fix such as translation improvement or UI element margin change,

• Minor improvements to “keep things happening”, …

Page 9: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

RepositoriesWhere to keep your code?

Page 10: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Repositories Deathmatch

Private repos Public repos ×

Free tier Up to 5 users

Unlimited public repos Unlimited private repos

Unlimited users

Unlimited public reposNo private repos ×

Up to 5 users

No public repos ×

Unlimited private repos Small teams tier $2 USD / user / month

Unlimited public repos Unlimited private repos

$9 USD / user / month

Unlimited public repos Unlimited private repos

$3 USD / user / month

No public repos ×

Unlimited private repos Unlimited number of free users

with active MSDN subscriptions.

Page 11: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

GitflowWhen two branches are not enough.

Page 12: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

What is Gitflow?

Not “another GIT”.

GIT branching model.

One approach of implementing product versioning

workflow with GIT DVCS.

Read more:https://www.atlassian.com/git/tutorials/comparing-workflows

http://nvie.com/posts/a-successful-git-branching-model/

Page 13: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

master VS develop

1. Everything begins with master branch

2. master can contain only production ready versions

3. develop is branched from master

4. develop contains latest integral version of code for

next planned release

5. When code is ready for release – develop is

merged to master with version tag

Deadly scenarios:

• You are in the middle of development of new

feature for release 1.2. and there is a critical bug on

1.1.

• Feature that you have been developing is canceled

but a lot of develop branch code has been changed

for it.

Page 14: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

feature branches

1. Branched off develop

2. Merges back to develop on completion

3. Naming convention: feature/name-of-feature

Recommended for larger new product features.

Feature branch can live between several releases.

Usually stays locally and is not sent to origin (depends on time

required for completion and number of involved teams).

Page 15: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

release branches

1. Branched off develop

2. Merges back to develop and master on

completion

3. Naming convention: release/version

4. Final preparations for production release.

5. No new features should be merged to release

branch.

6. When release branch is created, develop

branch should no longer be associated with this

product version, but instead with the next one.

7. Release version is determined as soon as

release branch is created.

Page 16: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

hotfix branches

1. Branched off master

2. Merges back to develop and master on

completion

3. Naming convention: hotfix/name

4. Each hotfix branch should result with a new

(unplanned) product version.

Use it only for mission critical bugs.

Page 17: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Revise

Page 18: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

ToolingHammer might be the best tool for nails but not so much for screws.

Page 19: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

What are we using?

MODERN DEVELOPERS

CEO

NOT SO MODERN DEVELOPERS

Page 20: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

CollaborationImproving team communication and client management.

Page 21: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Real-time collaboration systems aka

chats

Syntax highlighting ×External users (guests) (added recently)

Free tier Unlimited users Unlimited users

10.000 messages cap

No guests

Only for Office 365 users

Paid tier $3 USD / user / month

More features

$8 USD / user / month

Message cap removed

Guests per channel

Free = Standard

Why using chat systems:

• Faster and better team collaboration,

• No overlapping as with the e-mails,

• Improved communication with customers, …

Page 22: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Slack App: Jira Cloud

Available at:

https://slack.com/apps/A2RPP3NFR-jira-cloud

Page 23: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

Whatever your CEO thinks

is best, it’s the best-est!

Page 24: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

LFJ

If you have job offers, please

contact me.

Page 25: Managing software product versioning with Gitflow, VSTS and Atlassian SourceTree

ADMIR TUZOVIC | FORMER CTO | APP IMPACT

Thank you!