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

Summary

Buildkite is a continuous integration tool designed to improve software developer productivity. Buildkite product consists of three main components: - Agent: Is a small, cross-platform build runner that is enables an enterprise to run its builds in their own infrastructure. Agents run on several platforms including Ubuntu, Debian, Mac, Windows, Docker, and others. Agents can only run one build job at one time. - Pipelines: Are containers to define and model the build workflows and also to kick off post build steps. - Deployments: These are steps that run after a build is complete and can be either triggered automatically or manually.

As a smaller company with limited resources, Buildkite has taken a strategy of using plug-ins to extend its functionality and to integrate with other software. It is unclear how many community plug-ins have been developed. However as on 3/10/2020 there are about 19 supported plug-ins provided by Buildkite.

Strengths

  • Parallel Testing: One of the key value props for Buildkite is the ability to run parallel tests on builds, thus reducing test times from hours to minutes. Buildkite does this using its parallelism approach to spawn out multiple agents (e.g. several hundred parallel agents). With different tests running on a different agents. This massive parallel testing is possible due to the light weight build agent.
  • Runs on-premises and on AWS infrastructure
  • Agents can be deployed on multiple platforms.
  • Pipelines as code: Ability to define complex pipelines in yml including running any scripts, tool or shell commands within the pipeline.

Gaps

  • Buildkite is a point solution for continuous integration and currently lacks other critical DevOps steps such as Issue Management, Source Code Management, Security Testing etc. These capabilities require integrations with other tools.
  • Security - Buildkite relies on third party providers for security testing. Calling third party code to launch security tests would require special scripts and execution of APIs from within Buildkite’s pipeline definition.
  • Lacks native support for an Artifact Repository. File paths to various artifacts have to be noted and maintained by users.
  • Secrets management is possible but users have to either write plug-ins to standard secrets management products such as Hashicorp or write custom scripts to pull secrets from a secure storage and apply them at the right step in the build process.
  • Collaboration features are limited to developers annotating comments inline within log files and other points of failure.

Resources

Buildkite Documentation

Buildkite Videos

特性比较
特性

带有共享或私人Runner的免费版CI/CD

极狐GitLab 拥有共享的Runner,允许您完全免费版地使用极狐GitLab CI/CD多达400分钟的私人项目构建分钟和 50000 分钟的公共项目。 或者,您可以设置自己的Runner以实现更快的构建处理、无限的构建时间或特殊要求。

了解更多

内置CI/CD

极狐GitLab 内置无需独立安装的免费 CI/CD 功能,用户可使用该功能构建、 测试和部署网站(极狐GitLab Pages)或 Web 应用。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.

了解更多

CI/CD 流水线仪表板

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

了解更多

Online visualization of HTML artifacts

Access your test reports, code quality and coverage information directly from your browser, with no need to download them locally.

了解更多

流水线的按计划触发

您可以在类似 cron 的环境中按计划运行流水线。

了解更多

Code Quality MR Widget

Code Quality reports are available in the merge request widget area, giving you early insights into how the change will affect the health of your code before deciding if you want to accept it.

了解更多

代码质量报告

流水线⻚面上提供了全面的代码质量报告,不符合组织代码样式或标准的代码库内容将被显示出来。

了解更多

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.

了解更多

Customizable path for CI/CD configuration

You can define a custom path into your repository for your 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.

了解更多

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.

了解更多

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.

了解更多

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.

了解更多

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.

了解更多

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.

了解更多

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.

了解更多

Minimal CI/CD configuration

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

了解更多

内置和自定义的项目模板

在创建新项目时,您可以选择从一个预定义的模板启动项目,该模板已经有一些工作示例代码和预配置的 CI。此外,您也可以通过分配一个群组来预置自定义项目模板。当创建新项目时,该群组的子项目均可以使用这些模板。

了解更多

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.

了解更多

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.

了解更多

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.

了解更多

浏览器性能测试

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

了解更多

负载性能测试

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

了解更多

Step folding for CI/CD logs

Collapse the job log output for each command.

了解更多

外部代码库的 CI/CD 支持

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

了解更多

GitHub 的 CI/CD 支持

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

了解更多

Bad test quarantine

Don’t let red builds become the norm. Across all tests, keep flaky or broken tests out of sight (but not out of mind), and keep the build green with one-click quarantine of tests.

了解更多

单元测试报告

极狐GitLab 允许您查看流水线的单元测试结果,从而深入了解流水线的测试执行情况。

了解更多

请参阅在合并请求小组件中查看单元测试摘要

极狐GitLab 允许您从合并请求小组件查看单元测试结果,从而深入了解更改对质量的影响。

了解更多

交互式Web终端

交互式web终端允许您连接到正在运行或已完成的Kubernetes、Docker或Shell runner任务,并手动运行命令以更好地了解系统中发生的情况。

了解更多

Run jobs only when there are changes to a file or path

Jobs can be configured to run only when there are changes to a specific file or path, giving you control over execution to allow for more complex build pipelines optimized for the changes in each commit.

了解更多

Windows Container Executor

With this feature you are able to use Docker containers on Windows directly, in much the same was as if they were on Linux hosts. This enables more advanced kinds of pipeline orchestration and management for users of Microsoft platforms.

了解更多

Pipeline deletion

Deleting a pipeline is possible using the API and also in the UI on the Pipeline Details page. This allows for cases where perhaps secrets have been leaked in a pipeline, many unneeded pipelines have been created, or other issues have occurred where pipelines need to be deleted.

了解更多

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.

了解更多

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.

了解更多

在代码存储库中的任何事件上触发流水线

根据代码存储库中执行任何定义的事件的时间,允许启动流水线/工作流。 例如,可以运行一个工作流,在向存储库或项目添加新成员时发送欢迎电子邮件。

了解更多

Through WebHooks
Supports 21 event triggers

在代码仓库应用生态系统中的任何事件上触发流水线

根据在代码存储库或该存储库生态系统的任何应用程序扩展中执行任何已定义事件的时间,允许启动流水线/工作流。例如,当一个事件在Slack集成中发生时,更新仓库工作项。

了解更多

Through WebHooks

社区支持的工作流(配置即代码,因此可以共享)

极狐GitLab 流水线(工作流)在仓库中定义为yml,可以像“操作”一样共享。

了解更多

跨平台、与语言无关以及跨云

可以在任何操作系统平台、任何语言和任何云提供商上运行

了解更多

无需配置、基础设施设置或打补丁

作为SaaS产品,它可以提供软件开发和交付服务,而无需设置工具本身、运行工具的基础架构设施以及通过打补丁来维护工具。

了解更多

自动建议使用基于代码语言启动的流水线

通过语言检测,自动建议流水线模板运行,帮助用户快速启动流水线。

了解更多

Auto Devops runs a pipeline, not just suggest one

高级版CI/CD配置linter

CI linter在验证您的.gitlab-ci.yml文件时提供警告和错误消息,有助于使用极狐GitLab流水线快速启动和运行。

了解更多

带有许多预定义的流水线

提供许多预定义的流水线,这些流水线可以捕捉最佳实践,并使用户可以轻松开始使用通用语言、平台和配置的每个项目。

了解更多

连接SDLC期间使用的差异工具和服务

作为核心粘合剂,用于协调和连接来自许多不同工具和服务的数据和输出。

了解更多

从运行的流水线中直播日志

能够查看实时任务日志(当流水线在运行时)。

了解更多

跨所有任务日志的搜索

一次搜索所有或多个任务日志。 在排除故障或查看任务输出时,可以更有效地搜索错误和其他感兴趣的内容。

了解更多

browser search within the log at a time

以明文方式查看原始日志

获取纯文本、没有标记的日志,共享或在外部使用它的能力。

了解更多

每个存储库有多个流水线

能够为每个代码存储库定义多个流水线,以使不同的进程在不同的时间运行,和/或启用 monorepos,其中一个存储库中有多个应用程序,需要为每个应用程序构建和处理不同的应用程序。

了解更多

在另一个存储库中引用操作/任务

这是一种可以在当前仓库中引用位于其他仓库中的流水线/工作流的能力,而这无需任何安装。

了解更多