就像标题所说的,为什么我的 Jenkins Controller 越来越慢,可能是因为没有遵循 Jenkins pipeline 编写的一些最佳实践。
所以主要介绍 Jenkins pipeline 的一些最佳实践,目的是为了向 pipeline 作者和维护者展示一些他们过去可能并没有意识到的“反模式”。
我会尽量列出所有可能的 Pipeline 最佳实践,并提供一些实践中常见的具体示例。
一般问题
确保在 pipeline 中使用 Groovy 代码作为粘帖剂
使用 Groovy 代码连接一组操作而不是作为 pipeline 的主要功能。
换句话说,与其依赖 pipeline 功能(Groovy 或 pipeline 步骤)来推动构建过程向前发展,不如使用单个步骤(例如 sh
)来完成构建的多个部分。
pipeline 随着其复杂性的增加(Groovy 代码量、使用的步骤数等),需要 controller 上的更多资源(CPU、内存、存储)。将 Pipeline 视为完成构建的工具,而不是构建的核心。
示例:使用单个 Maven 构建步骤通过其构建/测试/部署过程来驱动构建。
在 Jenkins pipeline 中运行 shell 脚本
在 Jenkins Pipeline 中使用 shell 脚本可以通过将多个步骤合并到一个阶段来帮助简化构建。shell 脚本还允许用户添加或更新命令,而无需单独修改每个步骤或阶段。
Jenkins Pipeline 中使用 shell 脚本及其提供的好处: