Source Code Management for Dynamics NAV in
Download
Report
Transcript Source Code Management for Dynamics NAV in
Directions EMEA
Community for Dynamics NAV partners
Source Code Management for
Dynamics NAV
in 4 Examples
Soren Klemmensen, Kamil Sacek, Luc van Vugt & Eric Wauters
Introduction
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
4 Shades of Gray
Soren Klemmensen (CA)
Kamil Sacek (CZ)
Luc van Vugt (NL)
Eric Wauters (BE)
Agenda
Why Source Code Management (SCM)?
How SCM?
• 4 Shades of Gray (4 examples)
Why SCM?
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
Why SCM?
Why was change done?
Requirement
What does change contain?
Code change
Who did change?
Author
Where did change 'go'?
Change Flow
What changes have been applied?
History
Why SCM? - Benefits
Secured code
History at hand
Code Review
• code improvement
TFS/GIT
• used by many
• lots of built-in and plug-in tooling
• API
How SCM?
4 Shades of Gray
4 Shades of Gray
Luc van Vugt
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
Keep It Simple
Team Foundation Server holds all source, the truth
• including requirements
Manual ex-/import of .txt objects from/to databases
Environment & Tools
End User
• #1 School Book Reseller in The Netherlands
DTAP setup
• Development, Test, Acceptance, Production
• Branch & Merge Strategy to propagate approved code changes
Team Foundation Server 2012
Visual Studio 2012/2013/2015
NAV 2009 R2
Environment - Developer
Local or Virtual Machine
Check in
Code
Workspace
Managed
by
Visual
Studio
Developer
Database
Update/Sync
Database with
Workspace
Developer Isolation
Update
Workspace
Team Foundation Server
Update
Workspace
Environment - Test
Local or Virtual Machine
Check in
Code
Update
Workspace
Workspace
Managed
by
Visual
Studio
Test
Database
Update/Sync
Database with
Workspace
Team Foundation Server
Update
Workspace
Environment - Acceptance
Local or Virtual Machine
Workspace
Managed
by
Visual
Studio
Acceptance
Database
Update/Sync
Database with
Workspace
Team Foundation Server
Update
Workspace
Environment - Production
Local or Virtual Machine
Build
Database
.fob
Workspace
Managed
by
Visual
Studio
Production
Database
Team Foundation Server
.fob
Update
Workspace
DTAP with Multiple Developers/Projects
RI
DEV 2
RELEASE 2.1
(PRODUCTION)
RI
Branch
RI
Branch
FI
Branch
RI
TEST
(BETA)
MAIN
(ACCEPTANCE)
FI
FI
Branch
RI
DEV 1
Hotfix
RELEASE 2.2
(PRODUCTION
DTAP with Multiple Developers/Projects
$
- Dev
- Test (Beta)
RI
DEV 2
DEV 1
RELEASE 2.1
(PRODUCTION)
RI
- Main (Acceptance)
Branch
RI
Branch
MAIN
(ACCEPTANCE)
FI
Branch
RI
TEST
(BETA)
+ Dev-1
+ Dev-2
FI
FI
Branch
RI
+ Source
-
Hotfix
RELEASE 2.2
(PRODUCTION
+ Source
Releases
+ Release2.1 (Production)
+ Release2.2 (Production)
DTAP with Multiple Developers/Projects
$
- Dev
- Test (Beta)
+ Source
+ Dev-1
+ Dev-2
- Main (Acceptance)
+ Source
-
Releases
+ Release2.1 (Production)
+ Release2.2 (Production)
My Benefits
Release per changeset possible
• 1 changeset per requirement
• Rollback per changeset
Developer isolation
DTAP at hand
4 Shades of Gray
Eric Wauters
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
Keep It Simple
Team Foundation Server holds all:
• Source
• Source versions (object versions)
ReVision is going to manage text import and export (in
background)
Minimum change in DEV Experience, with the power of
Source Code Management.
Environment & Tools
Microsoft Dynamics NAV
iFacto ReVision
Team Foundation Server
Mantis
Environment - DEV
DEV Server
Terminal Server
TFS Server
Team
Foundation
Server
DEV
Database
DEV
Database
DEV
Database
DEV
Database
DEV
Database
Mantis
Dynamics NAV
Classic Client
iFacto ReVision
Check Out/In Objects
Rollback
DB Build Mgt
Compare / Edit / Compile
Object History
…
Link
Changesets
to Issues in
Mantis
Check Out
Press Ctrl+Alt+O
Check In
Press Ctrl+Alt+I
Object History
Press Ctrl+Alt+H
Object History / Compare
Select 2 changesets and right mouse click / Compare
Object History / Compare
Mantis
Changesets become automagically visible in Mantis
Example:
http://issuetracker.ifacto.be/view.php?id=14824
Environment - DEV
DEV Server
Terminal Server
TFS Server
Team
Foundation
Server
DEV
Database
DEV
Database
DEV
Database
DEV
Database
DEV
Database
Mantis
Dynamics NAV
Classic Client
iFacto ReVision
Check Out/In Objects
Rollback
DB Build Mgt
Compare / Edit / Compile
Object History
…
Link
Changesets
to Issues in
Mantis
Environment - Build
DEV Server
Terminal Server
TFS Server
Team
Foundation
Server
DEV
Database
Dynamics NAV
Classic Client
iFacto ReVision
Build Server
Compile all objects
Fetch changes
Report to developer
Mantis
Environment - Test
DEV Server
Terminal Server
TFS Server
Team
Foundation
Server
DEV
Database
Dynamics NAV
Classic Client
iFacto ReVision
Build Server
Test Server
Run all tests
Fetch changes
Report to developer
Mantis
My Benefits
History REALLY at hand (in the DEV Client)
Not necessary to maintain multiple isolated environments
No need to merge on every check-in
Possible to enforce the methodology
• Central Development DB
• Object Table Triggers – you need to check out before
development
• Managed by ReVision
Handicaps
No Branches
In our environment, our Branches are different databases with its
own repository.
ReVision makes it easy for us to compare these different
databases. Though, there is no defined relationship between any
of the “branches”
Not possible to work with more then one developer on 1
object at the same time
Which has got a big advantage as well: not necessary to merge on
every check in
Mantis
We should move to workitems
4 Shades of Gray
Kamil Sacek
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
Keep It Simple
GIT holds all source, the truth
Most things ‘on click’
Automatization through TFS Build
Environment & Tools
GIT + GITExtension
Home-brewed Version Control in NAV
NAVERTICA Helpdesk
PowerShell
TFS 2013/2015
NAV 2013/2015/2016
How it works?
Build
Update
repo
&
Commit
Local GIT
repository
Update/Sync
Database
with
repo
Isolated development
Developer Isolation
Developer
Database
Push
Build
Database
(tests)
Test/Build
results
GIT server
repository
(TFS, GITHub
…)
Pull
Build
(Update DB)
Check-in
(Update
repo)
Central
Development
Database
Central development
Demo
GITExtensions + PowerShell
My Benefits
Easy to use system
Flexible system
• Both development isolation and centralized development
Release per commit possible
Easy rollback
4 Shades of Gray
Soren Klemmensen
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
Keep It Simple
All developers use their own workspace
PowerShell Scripts to export and put individual objects
into their own workspace
Check-in is manual
Scripts to build new application
Import and compiling a new version can be automated
with the VS Build Engine
Environment & Tools
Custom and Vertical development
Visual Studio Online
Visual Studio 2013/2015
NAV 2009 R2, 2013, 2013 R2, 2015 & 2016
PowerShell (and vb script for old versions)
Environment - Developer
Local or Virtual Machine
Workspace
Managed
by
Visual
Studio
Developer
Database
Update/Sync
Database with
Workspace
Check in
Code
Code
Review
Developer Isolation
Update
Workspace
Visual Studio Online
Update
Workspace
Environment - Build
Local or Virtual Machine
Clean
Standard
DB
Workspace
Managed
by
Visual
Studio
Developer
Database
Update/Sync
Database with
Workspace
Developer Isolation
Build FOB
Visual Studio Online
Update
Workspace
My Benefits
ChangeSet with multiple objects
Strong tools to improve the Dev team
Developer isolation
No dependencies on NAV databases
The Source Code is the ONLY TRUTH
Branching and merging
Works for all development (not just NAV)
My Benefits
Nothing in NAV. Generic.
4 Shades of Gray
Benefits and Handicaps
Connected InNAVation!
Mannheim, Germany, October 5-7, 2015.
Benefits and Handicaps
Licensing
Shade of Gray
Luc
waldo
Kine
Soren
SCM
Build
Automated Automated
Integration
Build
Branching
Developer
No
Isolation/
Centralized Conflicts in Suspend
Concurrency Development
Id's
WIP
Join Us !
www.directionsemea.com