Gitlab hero border pattern left svg Gitlab hero border pattern right svg
GitLab
vs
Harness
Decision Kit
Decision Kit

Harness.io Summary

Harness.io provides a service that automates the Continuous Integration and Continous Delivery stage of the Software Development Life Cycle (SDLC).

Their CD service is available both as SaaS and on-premises deployment (Connected On-Premises & Disconnected On-Premises). Harness CI (formerly Drone) is a self service CI offering. Drone Cloud is a free Continuous Integration service for the Open Source community.

The basic value prop for Harness is that it abstracts away some of the complexity involved in deploying both traditional applications and in microservices based applications. Harness’ strength is more in the newer microservices based architectures.

Harness CI

Like GitLab, Harness CI (formerly Drone) also uses YAML files to define the steps of the CI pipeline. The most notable feature of Drone is it’s container-first approach, using isolated containers to execute each step in the CI pipeline. Drone also offers the option to run pipelines directly on a host machine, in a Digital Ocean Droplet or in a MacStadium Virtual Machine.

Drone packages and distributes Plugins as Docker containers that perform predefined tasks and are configured as steps in your pipeline. A list of available Plugins can be downloaded from their Plugin Marketplace.

Strengths

  • Easy to use UI, Visual display of pipeines and pipeline progress.
  • Ability to customize and templatize pipelines and pipeline steps
  • Continuous Verification capability integrates with several monitoring tools and applies machine learning to detect anomalies and automate rollback of deployment.
  • Container-first approach, CI pipeline executed in containers
  • YAML File: CI build jobs are configured in a YAML file
  • Support for pipeline execution within a Mac environment
  • Plugin Marketplace to share container based plugins
  • Integrates with multiple source code management systems, including GitHub, GitHubEnterprise, Bitbucket, and GitLab.

Gaps

  • No built-in SCM capability - context switching from SourceCode to CI to CD tools to take a pipeline from code to production.
  • Several out of the box integrations, but feedback from those systems is via a console type interface, making it harder to monitor tasks and to track down root cause of problems during deployment.
  • No built in security - must rely on third party products. This lengthens time to secure, test and deploy.
  • Issue management with pipelines requires third party product. This could result in loss of context and delays in addressing problems.
  • No true CI SaaS offering
  • No Single Integrated DevOps Application: Harness is a tool that automates the Continuous Integration and Continuous Deployment stage of the Software Development Life Cycle. To extend functionality, integration with plugins is required.
  • CI Security Accreditations: There is no information available on if Harness CI has achieved security accreditations such FedRamp and SOC 2
  • Harness CI has not been recognized by Forrester Wave as a Continuous Integration leader
Feature Comparison
FEATURES

Free CI/CD with shared or personal Runners

GitLab.com has shared Runners that allow you to use GitLab CI/CD completely free up to 400 build minutes for private projects and 50000 minutes for public projects. Alternatively, you can set up your own Runner for faster build processing, unlimited build minutes, or special requirements.

Explore GitLab.com offerings

内置CI/CD

极狐GitLab 内置无需独立安装的免费 CI/CD 功能,用户可使用该功能构建、 测试和部署网站(极狐GitLab Pages)或 Web 应用。CI/CD 任务的执行结果会显示在合并请求中以方便访问。

Learn more about CI/CD

CI/CD Horizontal Autoscaling

GitLab CI/CD cloud native architecture can easily scale horizontally by adding new nodes if the workload increases. GitLab Runners can automatically spin up and down new containers to ensure pipelines are processed immediately and minimize costs.

Learn more about GitLab CI/CD Horizontal Autoscaling

CI/CD 流水线仪表板

在用户可定制的仪表板中可视化跨项目和群组流水线的当前状态和历史记录。

Learn more about Cross-Project Pipelines in the Operations Dashboard

Deploy from Chat

Deploy from one environment (e.g. staging) to any other (e.g. production) from Chat

Read the documentation on Slash commands

Comprehensive pipeline graphs

Pipelines can be complex structures with many sequential and parallel jobs. To make it a little easier to see what is going on, you can view a graph of a single pipeline and its status.

Learn more about pipeline graphs

Browsable artifacts

With GitLab CI you can upload your job artifacts in GitLab itself without the need of an external service. Because of this, artifacts are also browsable through GitLab’s web interface.

Learn more about using job artifacts in your project

Latest artifacts locked to prevent deletion

The latest artifact of a successful job and pipeline on any active branch, MR, or tag is automatically locked to prevent being deleted. This makes it possible to set an aggressive expiration policy to clean up older artifacts, reduce disk space consumption, and ensure the latest artifact is always available. This default behavior is configurable at the project level and can be disabled in project settings.

Learn more about job artifacts expiration

Scheduled triggering of pipelines

You can make your pipelines run on a schedule in a cron-like environment.

Learn how to trigger pipelines on a schedule in GitLab

多项目流水线可视化

通过多项目流水线可视化,您可以查看上下游流水线是如何连接在一起为项目工作的。这些流水线作为更为复杂设计的一部分,通过触发器和彼此连接,就像微服务架构一样。

Learn more about multi-project pipeline graphs

Protected variables

You can mark a variable as “protected” to make it available only to jobs running on protected branches, therefore only authorized users can get access to it.

Learn how to use protected variables

Group-level variables

Define variables at the group level and use them in any project in the group.

Learn how to configure variables

Customizable path for CI/CD configuration

You can define a custom path into your repository for your CI/CD configuration file.

Learn how to configure a custom CI/CD configuration file

Run CI/CD jobs on Windows

GitLab Runner supports Windows and can run jobs natively on this platform. You can automatically build, test, and deploy Windows-based projects by leveraging PowerShell or batch files.

Install GitLab Runner on Windows

Run CI/CD jobs on macOS

GitLab Runner supports macOS and can run jobs natively on this platform. You can automatically build, test, and deploy for macOS based projects by leveraging shell scripts and command line tools.

Install GitLab Runner on macOS

Run CI/CD jobs on Linux ARM

GitLab Runner supports Linux operating systems on ARM architectures and can run jobs natively on this platform. You can automatically build, test, and deploy for Linux ARM based projects by leveraging shell scripts and command line tools.

Install GitLab Runner on Linux

Run CI/CD jobs on FreeBSD

GitLab Runner supports FreeBSD and can run jobs natively on this platform. You can automatically build, test, and deploy for FreeBSD-based projects by leveraging shell scripts and command line tools.

Install GitLab Runner on FreeBSD

Details on duration for each command execution in GitLab CI/CD

Other CI systems show execution time for each single command run in CI jobs, not just the overall time. We’re reconsidering how job output logs are managed in order to add this feature as well.

Learn more about job output logs in the documentation

Protected Runners

Protected Runners allow you to protect your sensitive information, for example deployment credentials, by allowing only jobs running on protected branches to access them.

Read more on the issue

Deploy Boards

Deploy Boards offer a consolidated view of the current health and status of each CI/CD environment running on Kubernetes. The status of each pod of your latest deployment is displayed seamlessly within GitLab without the need to access Kubernetes.

Learn more about Deploy Boards

Timed and manual incremental rollout deployments

GitLab can allow you to deploy a new version of your app on Kubernetes starting with just a few pods, and then increase the percentage if everything is working fine. This can be configured to proceed per a schedule or to pause for input to proceed.

Learn more about configuring incremental rollout deployments

Canary Deployments

GitLab Premium can monitor your Canary Deployments when deploying your applications with Kubernetes. Canary Deployments can be configured directly through .gitlab-ci.yml, the API, or from the UI of the Deploy Boards.

Learn more about configuring Canary Deployments

Minimal CI/CD configuration

GitLab CI/CD requires less configuration for your pipelines than other similar setups like Jenkins.

Learn more about GitLab CI/CD

Pipelines security

The ability of running CI/CD pipelines on protected branches is checked against a set of security rules that defines if you’re allowed or not. It includes creating new pipelines, retrying jobs, and perform manual actions.

Learn more about pipeline security

Include external files in CI/CD pipeline definition

You can include external files in your pipeline definition file, using them as templates to reuse snippets for common jobs.

Learn more about including external files

Step folding for CI/CD logs

Collapse the job log output for each command.

Documentation

外部代码库的 CI/CD 支持

极狐GitLab 支持连接托管在外部服务(如 GitHub 或 Bitbucket )上的项目,并利 用极狐GitLab CI/CD 流水线的强大功能轻松构建、测试和部署应用程序。

Learn more about CI/CD for external repositories

GitHub 的 CI/CD 支持

极狐GitLab 支持连接托管在 GitHub 上的项目,并利用极狐GitLab CI/CD 流水线的 强大功能轻松构建、测试和部署应用程序。

Learn more about CI/CD for GitHub

Interactive Web Terminals

Interactive web terminals allow you to connect to a running or completed Kubernetes, Docker, or Shell runner job and manually run commands to better understand what’s happening in the system.

Learn more about Interactive Web Terminals

Explicit support for monorepos

The ability to execute jobs only/except when there are changes for a given path or file support monorepos where many microservices are contained in a single repo.

Learn more about only/except CI/CD execution

Pipelines for Merge Requests

Specify when you want jobs to run only when they are in a pipeline associated with a Merge Request. Make your pipelines more efficient by running only the necessary jobs for Merge Requests.

Learn more about Pipelines for Merge Requests

合并后流水线

为保持主干代码整洁,在代码合并到主干之前,使用特殊的流水线运行合并后的代码,以检测出分支上状态良好但在合并后会使主干失败的变更。

Learn more about Pipelines for Merged Results

合并列车

通过并行地排列流水线(每个流水线都构建前一个流水线的合并结果), 确保流水线中向目标分支的变更流动有序且高效。压缩并合并(Squash-and-Merge)也支持合并列⻋。

Learn more about Merge Trains

在父项目中运行派生合并请求的流水线

具有适当权限的父项目成员可以使用父项目流水线的配置和执行器来运行派生合并请求的流水线。该功能增加了再一层的安全性,用以验证复刻合并请求中没有可能影响父项目的恶意活动。

Learn more about Forked MR Pipelines

Trigger pipeline on any event in code repository

Enables pipelines/workflows to be started based on when any defined event is executed in the code repository. For example, could run a workflow to send a welcome email on adding a new member to a repository or project.

Docs on GitLab triggerable events

Multiple trigger types
Supports 21 event triggers

Community powered workflows (configuration is code so are shareable)

GitLab pipeline (workflows) are defined as yml in repos and can be shared just like actions.

Any platform, any language, and cloud

Can run on any OS platform, for any language, and on any cloud provider

No configuration, infrastructure setup, or patching necessary

As a SaaS offering, can provide software development and delivery services without the need to set up the tool itself, infrastructure to run it, and to maintain it by patching.

Auto suggest pipelines to start with based on code language

Through language detection, auto suggest pipeline templates to run to help users quickly get a pipeline running.

Auto Devops runs a pipeline, not just suggest one

Advanced CI/CD configuration linter

The CI linter provide warnings and error messages when validating your .gitlab-ci.yml file, helping to get up and running quickly with GitLab pipelines.

Learn more about the CI YAML linter

Comes with many pre-defined pipelines

Offers many pre-defined pipelines that capture best practice and make it easy for a user to get started with each project for common languages, platforms, and configurations.

Connects the diff tools & services used during the SDLC

Can be used as a central glue to orchestrate, and connect data and outputs from your many different tools & services.

Run shared Linux runners

Ability to run runners on a pool of shared Linux systems from the SaaS offering.

Run shared Windows runners

Ability to run runners on a pool of shared Windows systems from the SaaS offering.

in beta

Run shared macOS runners

Ability to run runners on a pool of shared macOS systems from the SaaS offering.

Pipeline status visible in pull/merge request

Status and results of pipeline runs are viewable at least in summary from the merge/pull request that they are part of.

Live streaming of logs from running pipeline

Ability to see live job logs (while the pipeline is running).

Search across all job logs

Search across all or more than one job log at once. Enables more efficient search for errors and other content of interest while troubleshooting or reviewing job output.

browser search within the log at a time

View raw logs in plaintext

Ability to get the plain text of a log, no mark up, to be able to share it or use it externally.

Multiple pipelines per repo

Ability to define multiple pipelines per code repository to enable either different processes to be run at different times, and/or to enable monorepos where there are multiple applications within one repo which need to be built and handled differently per application.

Read more about child/parent pipelines

Reference actions/jobs in another repo

Ability to have pipelines/workflows reference and use actions/jobs from a repo different from the one it is being run from, without needing any installation.