注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
简介
Jenkins 和 GitHub Actions 都允许您创建能自动构建、测试、发布、发行和部署代� �的工作流程。 Jenkins 和 GitHub Actions 的工作流程配置有一些相似之处:
- Jenkins 使用 Declarative Pelines 创建工作流程,这些工作流程类似于 GitHub Actions 工作流程文件。
- Jenkins 使用阶段运行步骤集合,而 GitHub Actions 则使用作业来分组一个或多个步骤或单个命令。
- Jenkins 和 GitHub Actions 支持基于容器的构建。 更多信息请参阅“创建 Docker 容器操作”。
- 步骤或任务可以重复使用并与社区共享。
更多信息请参阅“GitHub Actions 的� �心概念”。
主要差异
- Jenkins 有两种类型的语法用来创建管道:Declarative Pipeline 和 Scripted Pipeline。 GitHub Actions 使用 YAML 创建工作流程和配置文件。 更多信息请参阅“GitHub Actions 的工作流程语法”。
- Jenkins 部署通常是自托管的,用户在自己的数据中心维护服务器。 GitHub Actions 通过托管自己可用于运行作业的运行器提供混合云方法,同时也支持自托管运行器。 更多信息请参阅“关于自托管运行器”。
比较功能
分发版本
Jenkins 可让您发送版本到单个构建代理,或者您可以在多个代理之间进行分发。 您也可以� �据不同的属性(例如操作系统类型)对这些代理进行分类。
同� �, GitHub Actions 可以向 GitHub 托管或自托管的运行器发送作业,您可以� �据不同的属性使用� �签对运行器分类。 更多信息请参阅“了解 GitHub Actions”和“关于自托管运行器”。
使用区段组织管道
Jenkins 将其 Declarative Pipelines 分为多个区段。 同� �,GitHub Actions 也将其工作流程分成单独的部分。 下表比较了Jenkins 区段与 GitHub Actions 工作流程。
Jenkins 指令 | GitHub Actions |
---|---|
agent | jobs.<job_id>.runs-on jobs.<job_id>.container |
post | |
stages | jobs |
steps | jobs.<job_id>.steps |
使用指令
Jenkins 使用指令来管理 Declarative Pipelines。 这些指令定义工作流程的特性及其执行方式。 下表演示这些指令如何� 射到 GitHub Actions 中的概念。
使用连续阶段
并行作业处理
Jenkins 可以并行运行 stages
和 steps
,而 GitHub Actions 目前只能并行运行作业。
Jenkins Parallel | GitHub Actions |
---|---|
parallel | jobs.<job_id>.strategy.max-parallel |
构建矩阵
GitHub Actions 和 Jenkins 都允许您使用构建矩阵来定义各种系统组合。
Jenkins | GitHub Actions |
---|---|
axis | strategy/matrix context |
stages | steps-context |
excludes |
使用步骤执行任务
Jenkins 将 steps
组织在 stages
。 每个步骤都可以是脚本、函数或命令等。 同� �, GitHub Actions 使用 job
来执行特定的 steps
组。
Jenkins 步骤 | GitHub Actions |
---|---|
script | jobs.<job_id>.steps |
常见任务示例
计划与 cron
一起运行的管道
Jenkins Pipeline | GitHub Actions 工作流程 |
---|---|
|
|
配置管道中的环境变量
Jenkins Pipeline | GitHub Actions 工作流程 |
---|---|
|
|
从上游项目构建
Jenkins Pipeline | GitHub Actions 工作流程 |
---|---|
|
|
使用多个操作系统构建
Jenkins Pipeline | GitHub Actions 工作流程 |
---|---|
|
|