{"id":"1b8bc51f-e482-4601-be7d-1430fdea7e5d","task":"Configure Spinnaker pipeline templates with Managed Pipeline Templates v2 (MPT) to standardize deploy pipelines across microservices with per-service variable overrides","domain":"Spinnaker","steps":["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"],"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"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/1b8bc51f-e482-4601-be7d-1430fdea7e5d"}