Configure Spinnaker pipeline templates with Managed Pipeline Templates v2 (MPT) to standardize deploy pipelines across microservices with per-service variable overrides
Create a pipeline template JSON file defining schema: v2 and a variables block that declares typed parameters such as serviceImage, targetCluster, and rollbackEnabled with default values and description fields
In the template stages array, reference variables using ${ templateVariables.serviceImage } in the Docker image field of the Deploy Manifest stage so the template is generic and parameterized
Save the template to Spinnaker using the spin CLI command spin pipeline-templates save --file template.json; the template is stored in Spinnaker's front50 service
Create per-service pipeline configurations that reference the template using schema: v2 and inherit: pipelineTemplateId; override only the variables block with service-specific values, keeping the stage definitions in the template
Use a Spinnaker webhook trigger on each service pipeline and pass trigger.payload fields through to template variables using ${ trigger.payload.imageTag } to enable event-driven deploys from a CI system
Configure a canary analysis stage in the template that conditionally enables based on the templateVariables.canaryEnabled variable, using a conditional expression to skip the stage when the variable is false
Known gotchas
Managed Pipeline Templates v2 requires Spinnaker 1.16 or later and the templateVariables syntax differs from MPT v1; mixing v1 and v2 schemas in the same Spinnaker instance causes template resolution errors that are not clearly reported in the UI
Template inheritance is shallow in MPT v2; a service pipeline configuration can only inherit from one template and cannot chain templates, so shared base functionality must be expressed in a single template rather than composed from multiple parent templates
Variables in MPT v2 do not support nested object types; if a stage requires a complex object, the variable must be expressed as a JSON string and parsed within a SpEL expression, which is difficult to validate and error-prone
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp