Migrate from CircleCI to Harness CI
Learn how to migrate your existing CircleCI workflows to Harness CI.
Harness CI and CircleCI are both cloud-native CI products that help developers build and test code.
What makes Harness CI unique?
Harness CI provides proprietary technologies, like Cache Intelligence and Test Intelligence, which make Harness CI four times faster than other leading CI tools.
Harness Test Intelligence (TI) is a proprietary technology that accelerates test cycles by running only the tests necessary to confirm the quality of the code changes that triggered a build. Visualizations show which code changes caused which tests to be selected, and TI can help you identify gaps in your test plan. TI also detects negative trends and provides actionable insights to improve quality. With TI, it's possible to reduce build cycle times by up to 90% without compromising application quality.
Harness Cache Intelligence is a proprietary technology that reduces pipeline execution time by automatically caching well-known directories for languages like Java and Node.js.
Harness CI is part of The Harness Platform, which is a self-service CI/CD platform that enables end-to-end software delivery. The Harness Platform includes features, functionality, and additional modules to help you build, test, deploy, and verify software. For example:
Role-Based Access Control (RBAC) helps you control user and group access to Harness resources according to users' roles. Using RBAC increases security and improves efficiency.
Harness Policy as Code is a centralized policy management and rules service that leverages the Open Policy Agent (OPA) to meet compliance requirements across software delivery and enforce governance policies.
The Harness Enterprise Ready Self-Managed Edition is an end-to-end solution for continuous, self-managed delivery. You can install and update Harness Self-Managed Enterprise Edition using online or offline (air-gapped) methods.
Comparison: Pipeline architecture
Both Harness CI and CircleCI use pipelines to organize workflows. CircleCI organizes steps and commands into jobs, and each pipeline has one or more jobs. Similarly, Harness CI organizes steps, which contain commands, into stages, and each each pipeline has one or more stages. The following truncated examples provide a simple comparison of pipeline structure in CircleCI and Harness CI.
jobs:
job1:
steps:
- checkout
- run: "execute-script-for-job1"stages:
- stage:
steps:
- step:
type: RunFor more information about Harness terminology, features, and pipeline components, go to the CI key concepts.
When creating pipelines, CircleCI supports pipeline configuration as code only. In contrast, the Harness CI Pipeline Studio provides both a visual editor and a YAML code editor.
The Harness YAML editor includes schema validation and auto-complete recommendations to simplify and expedite pipeline configuration.
The Harness visual editor provides a guided experience that enables anyone to easily build, debug, and run pipelines.
You can switch back and forth between editors.
Comparison: CircleCI orbs and Harness plugins
CircleCI orbs are reusable shareable configuration packages that combine jobs, commands, and executors.
Harness CI has two options for reusable, pre-packaged functionality:
Use Plugin steps to run GitHub Actions, Bitrise Workflow Steps, Drone plugins, and other plugins in your CI pipelines. Drone Plugins are Docker containers that perform a predefined task.
Create standardized step templates that can be reused across pipelines and teams in your Harness account.
CircleCI local CLI
The CircleCI local command line interface (CLI) can run Docker-based jobs locally. Harness Cloud infrastructure can execute these jobs in pipeline run steps.
CircleCI orbs scripts
It is possible to run CircleCI orb scripts directly in pipeline run steps.
Comparison: Specify a codebase or Docker image
To clone a codebase in CircleCI, you use a checkout step to check out source code to the configured path. In Harness CI, each pipeline has a codebase specification that identifies the code repo (input) that the pipeline uses to build an artifact (output). In Harness CI, codebase configuration has two components:
The codebase connector, which specifies the codebase URL and required credentials to access your code repos.
A series of settings describing how you want the pipeline to clone and build the repo.
When you create a Harness CI pipeline, you specify a default codebase to use for all stages in the pipeline. By default, each stage automatically clones the designated code repo from your Git provider into the stage's build infrastructure when the pipeline runs.
Comparison: Define a multi-stage build pipeline
In this example, Stage1 and Stage2 run concurrently. Once they are done, Stage3 runs. Once Stage3 is done, Stage4 runs.
CircleCI uses workflows to execute jobs in parallel, sequential, or mixed fashion.
In Harness CI, stages are executed in order of occurrence in the YAML config. Stages defined under the - parallel tag execute in a parallel fashion.
Comparison: Environment variables
In CircleCI, you use the web app to define project-level environment variables, and then you can reference them in a pipeline. You can use Context to use environment variables across multiple projects.
In Harness CI, you can define variables at the project, organization, and account levels. To reference these variables, you use variable expressions formatted as: <+variable.[scope].[variable_id]>. Here are the syntax formats for variables declared at different levels:
Account-level variable reference:
<+variable.account.[var_id]>Organization-level variable reference:
<+variable.org.[var_id]>Project-level variable reference:
<+variable.[var_id]>
In addition to project, organization, and account variables, you can use built-in variables or define custom variables within individual pipelines, stages, and steps. To learn more about defining and fetching variables in Harness, go to:
Comparison: Matrix jobs
In CircleCI, matrix jobs are achieved by using parameters and then referencing those parameters in the pipeline using the following expression syntax: << parameters.param >>
In Harness, matrix looping strategies are one of several looping execution strategies. With matrix looping strategies, your pipelines can execute the same set of tasks multiple times for several different configurations. This is achieved by mentioning user-defined tags and referencing them in the pipeline using the following expression syntax: <+matrix.usertag>
To learn about the looping strategies available in Harness, go to Use looping strategies
Comparison: Triggers
CircleCI supports triggering a pipeline on push and PR to the code repository and scheduled triggers.
Harness CI supports webhook triggers and scheduled triggers. The two most commonly used triggers are webhook triggers based on Git events and scheduled triggers based on a cron expression. To learn more about creating a trigger, go to Triggers.
See also
Review the following information before proceeding with migration:
Last updated
Was this helpful?