Skip to content

Migrate from Harness

Harness Slipway Notes
Account / Organization / Project Organisation / Project
Pipeline, Stage, Step Pipeline, Stage, Job, Step
CI stage (Build) A job (or several) running steps
CD stage (Deploy) A deploy job with environment: Strategy runs in the deploy engine
Service Service Artifact source maps to the service’s artifact spec
Environment Environment Environment type (prod / non-prod) maps to kind
Infrastructure Definition Infrastructure Kubernetes, ECS, Lambda, Cloud Run, Azure, VM, Terraform
Delegate Runner Dials out, like the delegate; pools and labels replace delegate selectors
Delegate selector runs_on labels
Connector Integration
Secrets Manager Secrets with external references; BYOK keyring
Rolling / Blue-Green / Canary deployment rolling / bluegreen / canary
Continuous Verification Canary verification Provider queries, baselines and thresholds
Approval step (Harness / Jira / ServiceNow) Approval, change-ticket gate
Step Group, Looping strategy (matrix, repeat) matrix
Conditional execution if: with CEL
Failure strategy retry, allow_failure, auto_rollback
Input sets, runtime inputs manual / api inputs
Pipeline / Step templates Org templates, extends Versioned and immutable
Triggers (webhook, scheduled, artifact) on: triggers; release trigger for new releases
OPA policies CEL policy gates (external OPA planned)
Service variables, environment overrides Variables scoped by service and environment
Feature Flags Flag integrations (LaunchDarkly, Unleash, Flagsmith) Slipway does not implement flags itself
Cloud Cost Management, Chaos, STO Not in scope Integrate dedicated tools

A Harness pipeline with a Build stage, then a Deploy stage to a Kubernetes prod environment using canary with Prometheus verification and a Jira approval becomes:

version: 1
name: api
on: { push: { branches: [main] } }
jobs:
- name: build
runs_on: [linux, docker]
outputs: { version: "${{ steps.v.outputs.version }}" }
steps:
- uses: slipway/checkout@v1
- id: v
run: echo "version=1.4.${{ git.short_sha }}" >> "$SLIPWAY_OUTPUT"
- uses: slipway/docker-build@v1
- uses: slipway/release-create@v1
- name: deploy-prod
needs: [build]
environment: { name: production, service: api }
steps:
- uses: slipway/deploy@v1
with: { release: "${{ needs.build.outputs.version }}", strategy: canary }

and in the app:

  • Production environment: required_approvals: 1, change_ticket_required: true with the Jira integration (Business and above) in place of the Jira approval step.
  • Canary strategy config: steps 5 / 25 / 100 and a verify block using the Prometheus provider. See Canary verification. Translate Harness’s metric definitions into error_rate and relative metrics.
  1. Install runners in the networks your delegates cover; recreate delegate selectors as labels.
  2. Recreate connectors as integrations; prefer OIDC and external references over stored credentials.
  3. Model services and environments and attach infrastructure.
  4. Convert pipelines, starting with CI stages.
  5. Port verification by recreating metric queries and thresholds, then dry-run against recent deployments.
  6. Cut over environment by environment.