Presentation is loading. Please wait.

Presentation is loading. Please wait.

Team Development Best Practices for Kentico CMS

Similar presentations

Presentation on theme: "Team Development Best Practices for Kentico CMS"— Presentation transcript:

1 Team Development Best Practices for Kentico CMS
Brian McKeiver, BizStream, Co-Owner & Kentico MVP

2 Goals Work efficiently as a group
Make your life easier as a Kentico Developer Hone your craft, make your customers happier

3 Cowboy Goal 1 vs. Team Most developers go through a period of being a cowboy, they sling code like a colt 45, shoot first, ask questions later, they feel like heroes. But working in a team can accomplish much more .

4 You don’t have to burn the place down
Goal 2 You don’t have to burn the place down No Stepping on Toes, Big on Automation, Worry about the important stuff, don’t sweat the small stuff, have recover-ability

5 Gladwell’s 10,000-Hour Rule Goal 3
Outliers: The Story of Success is a non-fiction book written by Malcolm Gladwell  Be a Craftsman!

6 When you see this… Let’s talk about this over a beer

7 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 What do you need to work as a group ?

8 Reasons to Install Locally
Documentation API CHM Kentico Installation Manager (KIM) Import Toolkit App Pool Recycles are controlled When building Kentico objects you frequently need to look up the API or Web Part properties. KIM makes hotfixing and updates easier Toolkit is very useful for updating data from spreadsheets

9 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 We tend to recommend one branch of code Virtual Files are new in 7.0 and can help with Database objects

10 Your exceptions are yours and yours alone
Running Local Code Debug with VS2012 HTTP Trace via Fiddler Your exceptions are yours and yours alone No danger of breaking the build Debug, Trace, Logging are all developers best friends

11 Shared Development Database
Key idea for Team Development Kentico CMS SQL DB Dev 1 Developers run locally for CODE but share the Kentico DB Should we consider Collision – Free approach ? Dev 2

12 Shared Development Instance
Running full copy of your site in TEST Kentico CMS Shared Dev Make changes to settings and objects that are database only on the Shared Dev Ex – Document Types, Custom Tables Dev 1 Dev 2

13 QA / Test Server Code QA / Test can see changes faster QA 1
Kentico CMS SQL DB Dev 1 Pro – QA sees changes faster, easier to deploy Con – risk of Dev breaking QA, How can we fix that? Dev 2

14 Actual Code Slinging Use both Localhost and Shared Dev, change Web part in Dev, JavaScript locally

15 Grow Your Craft Jedi Master Jedi Knight There is no Try, only Do -Yoda
Padawan Youngling Im going to show next how to help just not you but your whole team grow their craft

16 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

17 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 Option 1 – import / export fully supports (deploy easier) Option 2 – upgrade safe 100% you know where all of your code is that is custom A little bit of personal choice here Floats to top

18 Making it work: Site Settings
Kentico Site Settings for Team Dev Check in - check out (Object Lock) Object Versioning Blog Post

19 Object Locking & Versioning
Available for: CSS Stylesheets Templates Page Layouts Page Templates Transformations Web part Containers Web part Layouts * templates does not currently support storing on disk

20 Workflow for Content Tree
Use it always! Gives you recover-ability!

21 “Undo Checkout” is NOT your Friend
Warning 1 “Undo Checkout” is NOT your Friend You will lose your or someone else’s changes Global Admins can always do this, on any object in the system, BUT DON’T FALL FOR IT

22 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.

23 Tip: See All Checked Out Objects
My Desk tab to the rescue! Allows you to see all of your checked out objects in one shot

24 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 Enable on CMSSiteManager -> Administration -> System -> Virtual Objects

25 Virtual Objects: What it does
Use any IDE / Source Control client you want while editing externally in the file system.

26 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 But you are using source control so when commits happen your repo should see a merge situation and help you manage the collision correctly and not lose any changes. Commit frequently, clear cache

27 Virtual Objects Gotchas
Object Sync Message, respect it.

28 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. Don’t have to use with Source Control options. I’m not a fan of using this. When the deployment mode is ON, the source control options for object types that useVirtualPathProvider are disabled.

29 Continuous Integration (CI)
Lots of Options: Jenkins Team Foundation Server Team City

30 Automatic build and deploy capabilities
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 Reduction Staging errors Analysis & reporting on the health of the code base

31 Reduces overhead across overall development process
Value of CI 2 Business Value: Reduces Risk Reduces overhead across overall development process Provides better Quality Assurance Raises project visibility When a development team integrates their work frequently == less of a gap between the current state of the application and the state of the application as the developer has it. And so the scope for assumptions is reduced. Notice trend

32 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 Behind the scenes we are really using MSBuild to call the csc.exe (csharp compiler) as if you were hitting the Build button in Visual Studio

33 What to watch out for in upgrade / hotfix
Files will be overwritten if you do not segment your customizations

34 Don’t Rely on the System Transforms
What if someone re-installs a Module ? POOF Cloning is your Friend

35 Deployment Options Wah Wah it’s too hard because it’s got a SQL Database /cry

36 Import / Export (multiple)
You can choose to export multiple objects at once. This method is useful for deploying objects, aka a module, or set of Page Templates, however to be honest it is not the most robust mechanism. Not so much documents.

37 Import / Export (single)
Almost every object is export-able Look for the small grey dropdown arrow to expand the menu

38 Import / Export Gotchas
Update Documents Linked Documents License Issues WTF ? Tip, if you get a red error message during import that says Invalid Web Site or Invalid license that means you need to make the main URL of the site in CMSSiteManager the exact URL that you are importing at, and NOT the site domain alias.

39 Content Stage One click deployment, YES Please! Sign me up.
Tip: Don’t get rid of ItemGUID, ItemModifiedWhen Tip: You can control what gets staged or not from the task level by implementing DocumentEvents.LogChange.Before event handler or ObjectEvents.LogChange.Before

40 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 (yes this is a shameless plug) <add key="CMSMediaFileMaxStagingSize" value="1024" /> ** Hint Hint Kentico 8 people Tip: Make sure you have the url as the main domain and not an alias with a correct license Tip: Sync All is a very dangerous button if you are not trying to stay perfectly in sync, which is true in most team dev scenarios

41 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

42 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: <add key="CMSHashStringSalt"  value="e68b9ad6-a e3e-ece73f03dd02" /> Defaults to connectionstring appSetting Key, and that is bad because as you move from DEV to QA to LIVE you will have different connection strings

43 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

44 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

45 Team Development is supported better than ever in Kentico 7.0!
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

46 Questions

47 Thank You Web: Blog: Twitter: @mcbeev LinkedIn:

Download ppt "Team Development Best Practices for Kentico CMS"

Similar presentations

Ads by Google