Presentation on theme: "Team Development Best Practices for Kentico CMS Brian McKeiver, BizStream, Co-Owner & Kentico MVP."— Presentation transcript:
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
Team vs. Cowboy Goal 1
Goal 2 You don’t have to burn the place down
Goal 3 Gladwell’s 10,000-Hour Rule
Let’s talk about this over a beer When you see this…
Here We Go: First Time Setup Tools of the Trade – Local Workstation – Visual Studio – SQL Server Management Studio – 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 2 Dev 1
Shared Development Instance Running full copy of your site in TEST Dev 2 Dev 1 Shared Dev Kentico CMS
QA / Test Server Code Kentico CMS SQL DB Dev 2 Dev 1 QA 1 QA / Test can see changes faster
Actual Code Slinging
Grow Your Craft Jedi Master Jedi Knight Padawan Youngling There is no Try, only Do -Yoda
Naming Standards Matter Prefix 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/ project code as sub folder – ~/CMSModules/ – ~/CMSWebParts/ or – ~/App_Code/_framework/ – ~/_framework/ /CMSModules – ~/_framework/ /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 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 City Team Foundation Server
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 TestSelenium – 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
Import / Export (multiple)
Import / Export (single) Almost every object is export-able Look for the small grey dropdown arrow to expand the menu
Content Stage One click deployment, YES Please! Sign me up.
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)f2c eea6f50f961a af24e51cf154f75b f810dc0" Use the appSetting key:
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 You’ve Learned Work efficiently as a group Make your life easier as a Kentico Developer Hone your craft, make your customers happier Team Development is supported better than ever in Kentico 7.0! Assimilate as a Team. Resistance is Futile. Team Development FTW.