Jenkins 学习总结中,有哪些技巧和最佳实践?

摘要:谁家秋院无风入?何处秋窗无雨声? 导航 1 工具介绍 2 项目类型 3 Jenkinsfile 3.1 顶级块指令(pipeline) agent - 执行节点 triggers - 触发器 parameters - 等待输入 option
谁家秋院无风入?何处秋窗无雨声? 导航 1 工具介绍 2 项目类型 3 Jenkinsfile 3.1 顶级块指令(pipeline) agent - 执行节点 triggers - 触发器 parameters - 等待输入 options - 运行选项 stages - 构建阶段 3.2 阶段块指令(stages) tools - 编译工具集 environment - 环境变量 input - 等待输入 steps - 动作执行集 post - 构建后操作 when - 条件判断 parallel - 并行任务 3.3 动作指令(steps) echo - 输出日志 sh/bat - 执行 Shell 命令 git/checkout - 拉取代码 input - 人工确认 retry - 失败重试 timeout - 超时控制 archiveArtifacts - 文件存档 4 系统管理 5 常用插件 6 杂七杂八 1、工具介绍 Jenkins 是目前最经典、最广泛使用的 持续集成(CI)与持续交付(CD)自动化平台,它的核心作用是:把原本需要人工执行的软件 构建、测试、打包、部署 的繁琐流程进行自动化处理。 注:什么是 CI 和 CD ? CI(持续集成):指开发提交代码之后,工具会自动帮研发完成 编译构建、代码测试、软件打包 的整个过程。 CD(持续交付):指软件被打包之后,工具会自动帮运维完成软件 部署发布 的过程,该过程可能包含测试环境和生产环境。 2、项目类型 在 Jenkins 中创建自动化任务时,会发现它支持 5 种项目类型,而这些项目类型又分别有着适合自己的应用场景。因此,各项目类型的作用和适用场景应该被我们最先了解: Freestyle:这是最经典的项目类型,适合新手入门练手。用户只需在页面上点选配置,不用写一行代码,便可生成构建/部署的流程任务。【注:只适合 单个项目单分支 的 简单 任务】 Pipeline:这是最推荐的项目类型。用户通过编写 Jenkinsfile 文件来制定软件在构建/部署任务中所需的各种配置信息,所有的参数配置均体现在 Jenkinsfile 文件中,并根据文件内容自动生成流水线任务。【注:适合 单个项目单分支 的 复杂 任务】 Multibranch Pipeline:这是 Pipeline 的升级版。可自动扫描 Git 多个分支,并为每个拥有 Jenkinsfile 文件的分支自动生成流水线任务。【注:适合 单个项目多分支 的 复杂 任务】 Organization Folder:这是 Multibranch 的升级版。可自动扫描指定组织中所有项目的所有分支,并为每个拥有 Jenkinsfile 文件的分支自动生成流水线任务。【注:适合 组织项目多分支 的 复杂 任务。】 Matrix Project:类似 Freestyle 的升级版。将一个任务在多个 Agent 下执行。【注:这种方式在 Pipeline 中是通过自定义 agent + tools 来实现的,但现在正逐渐被淘汰。】 其中,使用最广泛的项目类型当属 Pipeline,而该项目类型又依赖于 Jenkinsfile 文件。因此,学会如何编写 Jenkinsfile 文件非常重要。 注:一个流水线任务通常一定包含:源码管理(SCM)、构建等动作,其中 SCM 在 Pipeline 项目中需要在 jenkinsfile 文件中通过 git 指令去拉取,而在其它类型的项目中,一般都是在项目的 configure 页面中去指定。 3、Jenkinsfile 【1】Jenkinsfile 支持使用两种语法进行编写:声明式和脚本化,其中声明式语法更易于编写和阅读。因此,下面出现的 Jenkinsfile 文件都以声明式语法为主。例如: pipeline { agent any //流水线任务被执行节点,必须 triggers { //触发器,非必须 cron('H */4 * * 1-5') } stages { //阶段动作,必须 stage('Test') { steps { echo "ok" } } } } 注:以上 Jenkinsfile 文件定义了一个 stage 任务会在默认的 agent 机器上被执行,触发执行的时间是在每周一到周五,每隔 4 小时自动触发一次,stage 任务在每次被执行结束之后,不管成功与否,都还会再执行一个 post 任务。
阅读全文