Predefined Build Configurations

Overview

The scaffolded solution comes with a list of build profiles each properly configured for the target environment:

  • Sandbox - Local development environment. This is the main profile for developers to work in. 
  • Sandbox-Package - same as Sandbox but it's not configured to trigger local TDS deployment and instead creates an .update pacakge. This profile is normally used on a CI machine to build and run unit tests
  • INT-Single - A profile for deployment to an Integration environment that runs CM and CD on the same Sitecore instance
  • QA-Single - Same as INT-Single but allows customizing <site> configuration for a differnt environment for Quality Assurance or client Acceptance Testing
  • PROD-Single - Production configuration (optimized code, no debug) for a single Sitecore instance running CM and CD
  • PROD-CM - Production configuration for Content Management instance (will normally include all pipeline processors and event handlers that help/customize editing experience) 
  • PROD-CD - Production configuration for Content Delivery instance (will normally not include editing extensions and instead include publish:remote:end events, for example)

Normally developers don't build locally anything other than Sandbox. Other profiles are used by a continuos build and release automation processes.

Sandbox

We call it Sandbox because we like the idea of sandboxed Sitecore on a local instance in a ./sandbox folder. Sandbox configuration highlights:

  • Full debug info and not optimized code for all assemblies (Data, Custom, and Web projects)
  • Local TDS deploy configured on TDS.Master project (no other profile is configured to deploy to a Sitecore instance from within Visual Studio)

  • Scaffolded <site> configuration turns on Sitecore Item Web API and assumes the site runs on http://mysolution 
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <sites>
      <site name="MySolution">
        <patch:attribute name="hostName">mysolution</patch:attribute>
        <patch:attribute name="targetHostName">mysolution</patch:attribute>
        <patch:attribute name="cacheHtml">true</patch:attribute>
        <patch:attribute name="enableDebugger">true</patch:attribute>
        <patch:attribute name="allowDebug">true</patch:attribute>
        <patch:attribute name="itemwebapi.mode">StandardSecurity</patch:attribute>
        <patch:attribute name="itemwebapi.access">ReadOnly</patch:attribute>
        <patch:attribute name="itemwebapi.allowanonymousaccess">true</patch:attribute>
      </site>
    </sites>
  </sitecore>
</configuration>

Sandbox-Package

Very similar to Sandbox but:

  • not configured to deployed locally when build
  • configured to generate an .update package for all TDS projects

INT-Single

Very similar to Sandbox-Package but with <site> config customized for Integration environment and Web API disabled. Compare with the Sandbox, for example:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <sites>
      <site name="MySolution">
        <patch:attribute name="hostName">int.mysolution.com</patch:attribute>
        <patch:attribute name="targetHostName">int.mysolution.com</patch:attribute>
        <patch:attribute name="cacheHtml">true</patch:attribute>
        <patch:attribute name="enableDebugger">true</patch:attribute>
        <patch:attribute name="allowDebug">true</patch:attribute>
      </site>      
    </sites>
  </sitecore>
</configuration>

QA-Single

Same as INT-Single with its own <site> configuration

PROD-Single

All production configuration have optimized build:

You may decide to change the Debug Info to pdb-only based on how you approach deployments and troubleshooting in your environments

And, of course, customized <site> definition.

PROD-CM and PROD-CD

Same as PROD-Single after the scaffolding. You would normally use either PROD-Single or PROD-CM + PROD-CD based on how you architect your production environment. In case of CM + CD you would make sure that you include your editing extensions and event handlers into CM but not CD