Team Development - Brian McKeiver`s Blog

advertisement
Team Development Best Practices for Kentico CMS
Brian McKeiver, BizStream, Co-Owner & Kentico MVP
Goals
• Work efficiently as a group
• Make your life easier as a Kentico Developer
• Hone your craft, make your customers happier
Cowboy
Goal 1
vs.
Team
Goal 2
You don’t have to burn the place down
Goal 3
Gladwell’s
10,000-Hour
Rule
When you see this…
Let’s talk about this over a beer
Here We Go: First Time Setup
• Tools of the Trade
– Local Workstation
– Visual Studio 2010+
– SQL Server Management Studio 2008+
– Source Control
– KenticoCMS_7_0.exe
• Goal: Install Kentico locally
Reasons to Install Locally
•
•
•
•
•
Documentation
API CHM
Kentico Installation Manager (KIM)
Import Toolkit
App Pool Recycles are controlled
Source Control with Kentico
• Code Considerations
– One branch or many ?
– Depends on team size and goals
• Database Considerations
– Leverage built in version control, check-in &
check-out
– Why external SQL versioning products may not
work
Running Local Code
• Debug with
VS2012
• HTTP Trace via
Fiddler
• Your exceptions
are yours and
yours alone
• No danger of
breaking the
build
Shared Development Database
• Key idea for Team Development
Dev 1
Kentico CMS
SQL DB
Dev 2
Shared Development Instance
• Running full copy of your site in TEST
http://mysite.devserver.com
Kentico
CMS
Shared Dev
http://localhost:42
http://localhost:42
Dev 1
Dev 2
QA / Test Server Code
QA 1
QA / Test can see changes faster
Dev 1
Kentico CMS
SQL DB
Dev 2
Actual Code Slinging
Grow Your Craft
There is no Try, only Do
-Yoda
Jedi
Master
Jedi
Knight
Padawan
Youngling
Naming Standards Matter
• Prefix 3 - 4 characters for project name
– Followed by fully spelled out, descriptive name
• Display Names
– Upper Case with spaces to delimit words
– Prefixing with a special character is recommended because the project
specific or custom object names will roll to the top of the Kentico
selectors.
• Object Code Names
– No Spaces, no special characters, Upper camel case
– 100% Relying on the automatic naming is not recommended
• Use the word “Custom” in Views / Stored Procs
– Use System Tables GUI in SiteManager to create them
Making it work: Custom Code Locations
• 2 Strategies
– ~/App_Code/<Custom Code>
• project code as sub folder
– ~/CMSModules/<Custom Code>
– ~/CMSWebParts/<Custom Code>
or
– ~/App_Code/_framework/<Custom Code>
– ~/_framework/<Custom Code>/CMSModules
– ~/_framework/<Custom Code>/CMSWebParts
Making it work: Site Settings
Kentico Site Settings for Team Dev
• Check in - check out (Object Lock)
• Object Versioning
Blog Post
Object Locking & Versioning
Available for:
• CSS Stylesheets
• E-mail Templates
• Page Layouts
• Page Templates
• Transformations
• Web part
Containers
• Web part Layouts
Workflow for Content Tree
Warning 1
“Undo Checkout”
is NOT your Friend
Warning 2
You will not be able to see Web Part settings if another developer has
a Page Template checked out or if it is checked in.
Tip: See All Checked Out Objects
My Desk tab to the rescue!
Virtual Objects with Kentico
• Check out to File
System
• Can still use
Kentico UI or
External Source
Control
• Apply Changes to
move back to DB
Virtual Objects: What it does
Use any IDE / Source
Control client you want
while editing externally in
the file system.
Virtual Objects: How it Saves You
• Kentico Cache and Object Locking
– 2 Devs land on the same checked in page template at
same time
– One checks out the template, the second goes to get
coffee
– One is working, second comes back and checks out
– Two checked out copies because working at localhost
Virtual Objects Gotchas
Object Sync Message,
respect it.
Deployment Mode with Kentico
When the deployment mode is OFF
• location of virtual objects depends on the Source control options.
When the deployment mode is ON
• virtual objects are moved from the database to the file system on your
disk. Target folder is ~/CMSVirtualFiles.
Continuous Integration (CI)
Lots of Options:
Jenkins
Team Foundation Server
Team City
Value of CI
Technical Value:
• Saves Time
• Automatic build and deploy capabilities
• Exercise / hone your craftsmanship
• Adds responsibility to check ins / commits
• Gives you metrics on code base
Value of CI 2
Business Value:
• Reduces Risk
• Reduces overhead across overall
development process
• Provides better Quality Assurance
• Raises project visibility
How to use CI with Kentico
• Automatic polling
– Build every X mins
• Hooks
– Build when events are triggered
– Most common hook is: when a commit occurs
• Most CI systems can spawn a Selenium Test
– Automated /Recorded HTTP request
What to watch out for in upgrade / hotfix
• Files will be overwritten if you do not segment your
customizations
Don’t Rely on the System Transforms
• What if someone re-installs a Module ?
• POOF
• Cloning is your Friend
Deployment Options
Import / Export (multiple)
Import / Export (single)
• Almost every object
is export-able
• Look for the small
grey dropdown
arrow to expand the
menu
Import / Export Gotchas
• Update Documents
• Linked Documents
• License Issues
Content Stage
One click deployment, YES Please! Sign me up.
Content Stage Gotchas
•
•
•
•
•
Stage a task while target server has it checked out **
Javascript Files in Site Manager - don’t go **
Custom Views / Stored Procs - don’t go **
Tasks can get out of control
Large Files
– http://mcbeev.com/...Quick-Tip-Content-Staging-and-Large-Files
(yes this is a shameless plug)
– <add key="CMSMediaFileMaxStagingSize" value="1024" />
** Hint Hint Kentico 8 people
Web Farm Sync
• Sync everything
everywhere
• Good for initial step in
project lifecycle as far as
developers go
• Also great for uptime and
reliability in Production
Environments
Deployment Setting: Macro Security
• A note about Connection Strings and Macro Security
• Ever seen this on your page ?
• |(user)mcbeev|(hash)f2c71936597eea6f50f961a70949934
59af24e51cf154f75b41032875f810dc0"
• Use the appSetting key:
• <add key="CMSHashStringSalt"
value="e68b9ad6-a461-4707-8e3e-ece73f03dd02" />
Team Dev: A Few Other Best Practices
• Keep Zone IDs and Web Part Control IDs as short as
possible. Use Web Part Titles instead
• Avoid Ad-hoc Templates, other devs won’t know about
them
Working with the Marketing People
• Yes even Content Admins have a right to play in the CMS
• Separate environments for DEV and Content Admins helps
• Use Content Staging to keep in Sync
Wrapping It Up
Team Development is supported
better than ever in Kentico 7.0!
Assimilate as a Team.
Resistance is Futile.
Team Development FTW.
You’ve Learned
• Work efficiently as a group
• Make your life easier as a Kentico Developer
• Hone your craft, make your customers happier
Questions
Thank You
Email:
bmckeiver@bizstream.com
Web:
http://www.bizstream.com
Blog:
http://www.mcbeev.com
Twitter:
@mcbeev
LinkedIn:
http://www.linkedin.com/in/brianmckeiver
Download