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

Summary

Codefresh is a CI/CD tool designed for containers and Kubernetes. Codefresh features a GitLab integration that allows you to use GitLab for version control and run Codefresh pipelines on your code. Codefresh has some features that make it more mature than GitLab for running pipelines across multiple projects. But it lacks the benefits of a single application.

Codefresh charges for builds per month, as well as concurrent builds. GitLab has no such limitations with the ability to elastically scale Runners to handle as many concurrent builds as needed on demand and then scale down so you aren’t paying to keep inactive Runners up.

Codefresh only offers a self-managed option for Enterprise pricing. Free, Basic, and Pro tiers are for SaaS-only. GitLab offers self-managed and SaaS options at every price point.

Resources

Comments/Anecdotes

Additional CodeFresh Capabilities

Private Helm repository

Global Helm repo configuration

Helm Repository browser

Helm release boards

Helm environment board

Zero configuration caching/artifacts using docker volumes

Distributed Docker layer caching

Custom docker image annotations

Inline pipeline editor

Feature Comparison
FEATURES

Built-in Container Registry

GitLab Container Registry is a secure and private registry for Docker images. It allows for easy upload and download of images from GitLab CI. It is fully integrated with Git repository management. (Codefresh will be ending their support for private docker registries as of May 1, 2020

Documentation on Container Registry

Review Apps 预览更改

在使用极狐GitLab CI/CD 的时候,您可以为每条分支新建一个运行环境,从而加速您的开发过程。为您的合并请求创建的动态环境,能够实现在真实的运行环境中预览您的分支内容。Review Apps 同时支持静态和动态 URL。

Learn more about Review Apps

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

Group-level Docker registry browser

A single UI view into images across multiple repositories.

Learn more about the GitLab Container Registry

Helm chart repository support

Supports storage and retrieval of Helm charts.

View the GitLab issue.

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

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

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

Show code coverage rate for your pipelines

GitLab is able to parse job output logs and search, via a customizable regex, any information created by tools like SimpleCov to get code coverage. Data is automatically available in the UI and also as a badge you can embed in any HTML page or publish using GitLab Pages.

Learn how to generate and show code coverage information in GitLab

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

Auto DevOps

Auto DevOps brings DevOps best practices to your project by automatically configuring software development lifecycles by default. It automatically detects, builds, tests, deploys, and monitors applications.

Read more about Auto DevOps 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

Easy integration of existing Kubernetes clusters

Add your existing Kubernetes cluster to your project, and easily access it from your CI/CD pipelines to host Review Apps and to deploy your application.

Read more in the docs

极狐GitLab Kubernetes 代理

通过代码驱动,以安全和兼容的方式管理 Kubernetes 集群的部署和连接。

Read more on the docs

Easy creation of Kubernetes clusters on GKE

Create a Kubernetes cluster on GKE directly from your project, just connecting your Google Account and providing some information. The cluster can be used also by Auto DevOps to deploy your application.

Read more in the docs

Support for multiple Kubernetes clusters

Easily deploy different environments, like Staging and Production, to different Kubernetes clusters. This allows to enforce strict data separation.

Read more in the docs

Easy Deployment of applications for Kubernetes clusters

Install Helm Tiller, Nginx Ingress, Cert-Manager, Prometheus, GitLab Runner, JupyterHub, and Knative directly into your cluster from the GitLab Web UI with one click.

Read through the documentation on installing applications on GKE clusters

Integrated cluster cost management

Get a peek at the cost of running your applications in Kubernetes to help with your budgeting requirements.

Read through the documentation on setting up cluster cost management

Automatic Retry for Failed CI Jobs

You can specify a retry keyword in your .gitlab-ci.yml file to make GitLab CI/CD retry a job for a specific number of times before marking it as failed.

Learn more about Automatic Retry for Failed CI Jobs

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

静态应用安全测试

极狐GitLab支持在 CI/CD 流水线中轻松地运行静态应用安全测试 (SAST),检查易受攻击的源代码或应用程序包含的库中的已知安全问题,并将结果显示在合并请求和流水线视图中。此特性作为 Auto DevOps 的一部分来提供缺省的安全。

Learn more about Static Application Security Testing

密钥检测

极狐GitLab 允许您在流水线中运行密钥检测,检查是否有包含未察觉的密钥和证书代码提交。检查结果将被展示在合并请求和流水线中。这一特性将作为 Auto DevOps 的一部分来提供默认安全策略。

Learn more about Secret Detection

依赖项扫描

极狐GitLab 自动检测该应用所包含的库中已知的安全问题,从而保护您的应用在动态使用依赖项时免遭漏洞影响。检测结果会显示在合并请求和流水线视图中,此特性作为 Auto DevOps 一部分来提供缺省的安全性。

Learn more about Dependency Scanning

动态应用安全测试

在应用运行后,极狐GitLab 支持在 CI/CD 流水线中运行动态应用安全测试(DAST),通过扫描您的应用以确保诸如 XSS 或无效身份验证之类的威胁不会影响到它。检测结果会显示在合并请求和流水线视图中,此特性作为 Auto DevOps 一部分来提供缺省的安全性。

Learn more about application security for containers

Interactive Application Security Testing

IAST combines elements of static and dynamic application security testing methods to improve the overall quality of the results. IAST typically uses an agent to instrument the application to monitor library calls and more. GitLab does not yet offer this feature.

容器扫描

在为您的应用程序构建 Docker 镜像时,极狐GitLab 可以运行安全扫描以确保它没有任何已知的代码交付环境中的漏洞。结果随后显示在合并请求和流水线视图中。此功能作为 Auto DevOps 的一部分来提供缺省的安全策略。

Learn more about container scanning

浏览器性能测试

在代码合并到主干前,轻松地检测Web应用程序的性能情况。浏览器性能测试包含在 Auto DevOps 功能中,它以零配置的方式提供对根⻚面的自动化性能分析。

Learn more about Browser Performance Testing

负载性能测试

在代码合并到主干之前,轻松地检测在负载情况下软件的性能回归情况。

Learn more about Load Performance Testing

Automated Accessibility scanning of Review Apps

Performing accessibility testing is important in order to ensure you’re serving all the users who use your products. In GitLab you can generate Accessibility reports automatically prior to merging into master.

Learn more about Autoamted Accessibility scanning

Leverage virtual package registries to simplify package management workflows.

A virtual registry is a collection of local, remote and other virtual registries accessed through a single logical URL.

GitLab Epic detailing the issues required to add this functionality.

Forward requests for packages not found in GitLab to npmjs.com

By default, when an NPM package is not found in the GitLab NPM Registry, the request is forwarded to npmjs.com

Check out the docs to learn more

Conan (C/C++) Repository

Conan is an open source, decentralized and multi-platform C/C++ Package Manager for developers to create and share native binaries.

Documentation on the Conan Repository

Maven (Java) Repository

GitLab’s Maven repository makes it easier to publish and share Java libraries across an organization, and ensure dependencies are managed correctly. It is fully integrated with GitLab, including authentication and authorization.

Documentation on the Maven Repository

NPM (node) Registry

GitLab’s NPM repository makes it easier to publish and share NPM packages across an organization, and ensure dependencies are managed correctly. It is fully integrated with GitLab, including authentication and authorization.

Documentation on the NPM Registry

NuGet (.NET) Repository

GitLab’s NuGet Repository allows C#/.NET developers to create, publish and share packages using the NuGet client or visual studio.

Documentation on the NuGet Repository

PyPI (Python) Repository

Python developers can set up GitLab as a remote PyPI repository and build, publish, and share packages using the PyPI client or GitLab CI/CD.

Documentation for the PyPI Repository

RPM (Linux) Repository

This planned feature will enable Linux developers to build, publish and share RPM packages alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

Debian (Linux) Repository

This planned feature will enable Linux developers to build, publish and share Debian packages alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

RubyGems (Ruby) Repository

This planned feature will enable Ruby developers to setup GitLab as a remote RubyGems repository and to build, publish and share packages using the command line or GitLab CI/CD. This will also be a valuable feature for GitLab and help with dogfooding

Check out the issue for additional details on implementation and timing

Go Proxy

This feature helps Go developers to publish and share their packages right alongside their source code and pipelines. This will also be a valuable feature for GitLab and help with dogfooding

Read the Go Proxy docs

Composer (PHP) Repository

This feature helps PHP developers to build, publish and share their packages right alongside their source code and pipelines.

Check out the docs

Use the Package Registry through REST API

Enables support for automation and integration of the GitLab Package Registry through a REST API.

Documentation on API

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

Global Docker registry browser

A single UI view into images across multiple repositories.

Read more on the issue

Group-level Kubernetes cluster configuration

A single UI view into Kubernetes cluster configuration for groups.

Read more in the docs

Instance-level Kubernetes cluster configuration

A single UI view into Kubernetes cluster configuration for a GitLab instance.

Read more in the docs

First class container building

The ability to specify that a container should be built during a CI/CD job without needing to specify the implementation details.

Read more on the issue

Group-level kubernetes clusters

Create group-level Kubernetes cluster that can be used for all projects contained within the group or sub-groups.

Learn more about group-level clusters

Instance-level kubernetes clusters

Create instance-level Kubernetes clusters that can be used for all groups and projects contained within the same GitLab instance.

Learn more about instance-level clusters

按需动态应用安全测试

一直等待下一次 CI 流水线的运行来检查您的站点是否存在漏洞,或是重现以前发现的漏洞是不合理的。极狐GitLab 提供了按需动态应用安全测试(DAST)来扫描正在运行的应用,它可以独立于代码更改和合并请求执行。

Learn more about On-demand DAST

按需 DAST 扫描的站点配置文件

通过按需 DAST 扫描快速重用配置文件,而不是每次需要运行时重新配置。将不同的扫描配置文件与站点配置文件混合,以快速执行涵盖应用程序和 API 不同区域或不同深度的扫描。

Learn more about application security for containers