| name | migrate-pipeline |
| description | Migrate Harness pipelines from v0 to v1 simplified format via MCP tools. Converts expressions from angle-bracket to ${{ }} syntax, lowercases type names, simplifies structure, and preserves variables, failure strategies, and conditional logic. Use when asked to migrate a pipeline, convert v0 to v1, upgrade pipeline format, modernize pipeline syntax, or compare v0 vs v1. Trigger phrases: migrate pipeline, convert to v1, upgrade pipeline, v0 to v1, modernize pipeline, simplified format. |
| metadata | {"author":"Harness","version":"2.0.0","mcp-server":"harness-mcp-v2"} |
| license | Apache-2.0 |
| compatibility | Requires Harness MCP v2 server (harness-mcp-v2) |
Migrate Pipeline
Convert Harness pipelines from v0 to v1 simplified format via MCP.
Instructions
Step 1: Fetch Current v0 Pipeline
Call MCP tool: harness_get
Parameters:
resource_type: "pipeline"
resource_id: "<pipeline_identifier>"
org_id: "<organization>"
project_id: "<project>"
Step 2: Convert v0 to v1
Apply these transformations:
Expression Mapping
| v0 Expression | v1 Expression |
|---|
<+pipeline.variables.x> | ${{ pipeline.variables.x }} |
<+stage.variables.x> | ${{ stage.variables.x }} |
<+steps.id.output.outputVariables.x> | ${{ steps.id.output.x }} |
<+trigger.branch> | ${{ trigger.branch }} |
<+secrets.getValue("x")> | ${{ secrets.x }} |
<+pipeline.sequenceId> | ${{ pipeline.sequenceId }} |
<+input> | ${{ input }} |
Structure Changes
v0 CI Stage:
stages:
- stage:
identifier: build
type: CI
spec:
cloneCodebase: true
platform:
os: Linux
arch: Amd64
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
identifier: run
type: Run
spec:
shell: Bash
command: npm test
v1 Equivalent:
stages:
- name: build
type: ci
spec:
steps:
- name: run
type: run
spec:
shell: bash
run: npm test
Key v1 differences:
- Stage/step types are lowercase:
ci, run, deployment
command becomes run in Run steps
execution.steps simplifies to spec.steps
- Platform/runtime is simplified or implicit
identifier becomes name (or id)
Step 3: Show Converted Pipeline
Present both v0 and v1 side-by-side for review.
Step 4: Create or Update in Harness (Optional)
v0 and v1 pipelines are distinct resource types in the MCP server (pipeline vs pipeline_v1). You cannot update a v0 pipeline in-place with v1 YAML. Choose one path:
Path A — Create a new v1 pipeline (recommended, non-destructive):
Call MCP tool: harness_create
Parameters:
resource_type: "pipeline_v1"
org_id: "<organization>"
project_id: "<project>"
body: { yamlPipeline: "<converted v1 pipeline YAML string>" }
Path B — Update an existing v1 pipeline (only if the v1 pipeline already exists under that ID):
Call MCP tool: harness_update
Parameters:
resource_type: "pipeline_v1"
resource_id: "<pipeline_identifier>"
org_id: "<organization>"
project_id: "<project>"
body: { yamlPipeline: "<converted v1 pipeline YAML string>" }
Do not pass a raw YAML blob without wrapping in { yamlPipeline: ... } or as a raw string — passing a nested JSON pipeline object causes serialization errors.
Migration Checklist
Examples
- "Migrate the build-and-deploy pipeline to v1" - Fetch, convert, show diff
- "Show me what ci-pipeline would look like in v1" - Fetch, convert, display only
- "Convert all pipelines in the project" - List all, convert each
Performance Notes
- Read the complete v0 pipeline before starting migration. Missing stages or steps will produce an incomplete v1 pipeline.
- Verify all expressions are converted from
<+...> to ${{ }} format.
- Compare the v0 and v1 outputs to confirm no functionality was lost in translation.
Troubleshooting
Unsupported v0 Features
- Some v0-specific step types may not have v1 equivalents yet
- Complex failure strategies may need manual adjustment
- Custom stage types require careful mapping
Validation Errors After Migration
- Re-validate expression syntax
- Check all resource references still resolve
- Verify variable types are compatible