This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.3. 从 Jenkins 迁移到 OpenShift Pipelines 或 Tekton
您可以将 CI/CD 工作流从 Jenkins 迁移到 Red Hat OpenShift Pipelines,这是基于 Tekton 项目的云原生 CI/CD 体验。
5.3.1. Jenkins 和 OpenShift Pipelines 概念的比较 复制链接链接已复制到粘贴板!
您可以查看并比较 Jenkins 和 OpenShift Pipelines 中使用的以下等效术语。
5.3.1.1. Jenkins 术语 复制链接链接已复制到粘贴板!
Jenkins 提供声明式和脚本化管道,它们可以使用共享库和插件扩展。Jenkins 中的一些基本术语如下:
- 管道(Pipeline):利用 Groovy 语法自动化构建、测试和部署应用的整个流程。
- 节点(Node):能够编配或执行脚本化管道的计算机。
- 阶段(Stage):在管道中执行的概念上不同的任务子集。插件或用户界面通常使用此块来显示任务的状态或进度。
- 步骤(Step):一项任务指定要执行的确切操作,可使用命令或脚本。
5.3.1.2. OpenShift Pipelines 术语 复制链接链接已复制到粘贴板!
OpenShift Pipelines 使用 YAML 语法用于声明管道,由任务组成。OpenShift Pipelines 中的一些基本术语如下:
- 频道(Pipeline):一组串行或并行(或两者)任务。
- 任务(Task) :作为命令、二进制文件或脚本的步骤序列。
- 管道运行(PipelineRun):执行包含一个或多个任务的管道。
任务运行(TaskRun):通过一个或多个步骤执行任务。
注意您可以使用一组输入(如参数和工作区)启动 PipelineRun 或 TaskRun,执行会产生一组输出和工件。
workspace :在 OpenShift Pipelines 中,工作区是概念块,用于以下目的:
- 存储输入、输出和构建工件.
- 在任务间共享数据的通用空间.
- 在 secret 中保存的凭证挂载点、配置映射中保存的配置以及机构共享的通用工具。
注意在 Jenkins 中,没有 OpenShift Pipelines 工作区直接对应的工作区。您可以将控制节点视为工作区,因为它存储克隆的代码存储库、构建历史记录和工件。当作业分配给其他节点时,克隆的代码和生成的工件会存储在该节点中,但控制节点维护构建历史记录。
5.3.1.3. 概念映射 复制链接链接已复制到粘贴板!
Jenkins 和 OpenShift Pipelines 的构建块并不等同,特定比较并不提供技术准确的映射。Jenkins 和 OpenShift Pipelines 中的以下术语和概念一般关联:
Jenkins | OpenShift Pipelines |
---|---|
Pipeline | Pipeline 和 PipelineRun |
Stage | 任务 |
Step | 一个任务中的一个步骤 |
5.3.2. 将示例管道从 Jenkins 迁移到 OpenShift Pipelines 复制链接链接已复制到粘贴板!
您可以使用以下等同的示例来帮助将构建、测试和部署管道从 Jenkins 迁移到 OpenShift Pipelines。
5.3.2.1. Jenkins 管道 复制链接链接已复制到粘贴板!
考虑在 Groovy 中编写的 Jenkins 管道,用于构建、测试和部署:
5.3.2.2. OpenShift Pipelines 管道 复制链接链接已复制到粘贴板!
要在 OpenShift Pipelines 中创建相当于前面的 Jenkins 管道的管道,您需要创建以下三个任务:
build
任务 YAML 定义文件示例
test
任务 YAML 定义文件示例
deploy
任务 YAML 定义文件示例
您可以按顺序组合三个任务以在 OpenShift Pipelines 中组成管道:
示例:用于构建、测试和部署的 OpenShift Pipelines 管道
5.3.3. 从 Jenkins 插件迁移到 Tekton Hub 任务 复制链接链接已复制到粘贴板!
您可以使用 插件 来扩展 Jenkins 的功能。要在 OpenShift Pipelines 中实现类似的可扩展性,请使用 Tekton Hub 中提供的任何任务。
例如,考虑 Tekton Hub 中的 git-clone 任务,它对应于 Jenkins 的 git 插件。
示例:Tekton Hub 中的 git-clone
任务
5.3.4. 使用自定义任务和脚本扩展 OpenShift Pipelines 功能 复制链接链接已复制到粘贴板!
在 OpenShift Pipelines 中,如果您在 Tekton Hub 中找不到正确的任务,或需要对任务进行更大的控制,您可以创建自定义任务和脚本来扩展 OpenShift Pipelines 的功能。
示例:运行 maven test
命令的自定义任务
示例:通过提供自定义 shell 脚本的路径
示例:在 YAML 文件中写入自定义 Python 脚本
5.3.5. Jenkins 和 OpenShift Pipelines 执行模型的比较 复制链接链接已复制到粘贴板!
Jenkins 和 OpenShift Pipelines 提供了类似的功能,但在架构和执行方面有所不同。
Jenkins | OpenShift Pipelines |
---|---|
Jenkins 有一个控制器节点。Jenkins 集中运行管道和步骤,或编排其他节点上运行的作业。 | OpenShift Pipelines 是无服务器且分布式的,它没有执行中央依赖项。 |
容器由 Jenkins 控制器节点通过管道启动。 | OpenShift Pipelines 采用"容器先行"方法,其中的每个步骤都作为 pod 中的容器运行(等同于 Jenkins 中的节点)。 |
使用插件可实现可扩展性。 | 使用 Tekton Hub 中的任务或创建自定义任务和脚本来实现可扩展性。 |
5.3.6. 常见使用案例示例 复制链接链接已复制到粘贴板!
Jenkins 和 OpenShift Pipelines 都为常见 CI/CD 用例提供功能,例如:
- 使用 Apache Maven 编译、构建和部署镜像
- 使用插件扩展核心功能
- 重新使用可共享库和自定义脚本
5.3.6.1. 在 Jenkins 和 OpenShift Pipelines 中运行 Maven 管道 复制链接链接已复制到粘贴板!
您可以在 Jenkins 和 OpenShift Pipelines 工作流中使用 Maven 来编译、构建和部署镜像。要将现有的 Jenkins 工作流映射到 OpenShift Pipelines,请考虑以下示例:
示例:完成并构建镜像,并使用 Jenkins 中的 Maven 部署到 OpenShift
示例:完成并构建镜像,并使用 OpenShift Pipelines 中的 Maven 部署到 OpenShift 中。
5.3.6.2. 使用插件扩展 Jenkins 和 OpenShift Pipelines 的核心功能 复制链接链接已复制到粘贴板!
Jenkins 利用了其广泛的用户群来多年开发的大量插件生态系统。您可以在 Jenkins 插件索引中搜索和浏览插件。
OpenShift Pipelines 还有许多任务由社区和企业用户开发并贡献。Tekton Hub 中提供了可重复使用的 OpenShift Pipelines 任务的公开目录。
另外,OpenShift Pipelines 包含在其核心功能中 Jenkins 生态系统的许多插件。例如,授权是 Jenkins 和 OpenShift Pipelines 中的关键功能。虽然 Jenkins 使用基于角色的访问控制插件来确保授权,OpenShift Pipelines 使用 OpenShift 的内置基于角色的访问控制系统。
5.3.6.3. 在 Jenkins 和 OpenShift Pipelines 中共享可重复使用的代码 复制链接链接已复制到粘贴板!
Jenkins 共享库 为 Jenkins 管道的各部分提供可重复使用的代码。该库在 Jenkinsfile 之间共享,以创建高度模块化的管道,而不重复代码。
虽然 OpenShift Pipelines 中没有直接等效的 Jenkins 共享库,但您可以使用 Tekton Hub 中的任务与自定义任务和脚本相结合来实现类似的工作流。