Skip to content

Extended templates: pointer to public playbook

The canonical operational guide for Layer 3 service template repositories that extend ConnectSoft.BaseTemplate via a base-template/ git submodule—full multi-layer alignment (MSBuild/CPM, Docker, application azure-pipelines.yml, template installer azure-pipelines-template.yml, metadata composition)—lives in ConnectSoft.Documentation:

Extended templates: full multi-layer alignment playbook

Use that page as the single entry point; it links to layering specs, overlay and metadata documents, and ADR context without duplicating them.

  • Centralized build scripts: Layer 3 staging and metadata composition now run from the base-template submodulebase-template/build/Prepare-ExtendedTemplatePack.ps1 (-PackProfile Simple|Layer3Full) and base-template/build/Invoke-TemplateCompose.ps1 (-ComposeProfile Simple|Identity|Microservice|ApiGateway). Layer 3 repos call these from azure-pipelines-template.yml and must not carry their own build/prepare-*-template-pack.ps1 / build/template-compose*.ps1. ConnectSoft/tools/Validate-Layer3Alignment.ps1 enforces the layout.
  • MSBuild / CPM (extended repos): satellite projects under base-template/ import base-template/build/ExtendedHost.BaseTemplateSatelliteDefaults.props (from the submodule); host projects use dual conditional Import in the entry DisableMicrosoftExtensionsStack*.props plus a repo-specific minimal fragment—see the public playbook section MSBuild and Central Package Management. PackageReference / PackageVersion alignment (Option A) lives in ConnectSoft.BaseTemplate; Layer 3 should not add CentralPackageVersions.MinimalHost.props / ConnectSoftCentralPackageVersionOverrides for BaseTemplate optional stacks (retired pattern for first-party templates once the submodule includes Option A).

Docker / ACR: Layer 3 azure-pipelines.yml jobs that push images should use the same dockerRegistryServiceConnection (Azure DevOps Docker Registry service connection) as ConnectSoft.BaseTemplate unless you intentionally use another registry—the public playbook documents this under Azure Container Registry and dockerRegistryServiceConnection.