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 任务。
