470 likes | 666 Views
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. vs. Goal 1. Team.
E N D
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 vs. Goal 1 Team
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 Kentico CMS SQL DB Dev 1 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 2 Dev 1
QA / Test Server Code QA / Test can see changes faster QA 1 Kentico CMS SQL DB Dev 1 Dev 2
Grow Your Craft There is no Try, only Do -Yoda
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
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 SystemTransforms • What if someone re-installs a Module ? • POOF • Cloning is your Friend
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 WTF ?
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)f2c71936597eea6f50f961a7094993459af24e51cf154f75b41032875f810dc0" • 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! You’ve Learned • Work efficiently as a group • Make your life easier as a Kentico Developer • Hone your craft, make your customers happier Assimilate as a Team. Resistance is Futile. Team Development FTW.
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