常见词汇
|---------------|-----------------------------------------------------------------------------------------------------------------|
| 词汇 | 说明 |
| Node | 作为 Jenkins 环境的一部分并能够执行Pipeline或项目的机器,无论是 Master 还是Agent 都被认为是 Node。 |
| Master | 存储配置,加载插件以及为 Jenkins 呈现各种用户界面的主控节点 |
| Agent | 通常是一台主机或容器,连接到 Jenkins 主控节点,并执行主控节点下发的任务 |
| Executor | 节点上执行由 Pipeline 或 Project定义的任务的抽象槽位。一个节点可以配置 0 个或多个 executor,这与该节点上能够执行的并发项目或 pipeline 的数量相对应。 |
| Label | 用于给 Agent做分组的用户定义的文本 |
| Plugin | 插件,为 Jenkins 提供各种扩展功能 |
| Project | 由用户定义的,用来描述 Jenkins 执行的任务 |
| Pipeline | 用户定义的用于持续集成的流水线模型 |
| Workspace | Node 文件系统上的一个一次性目录,Pipeline 或 Project可以在这里完成工作。除非在 Jenkins Master 上已经设置清理策略,否则在构建或管道运行完成后,工作区通常会保留。 |
| Stage | Pipeline的一部分,用于定义整个 Pipeline 的概念上不同的子集。例如:"构建","测试"和"部署" |
| Step | 单一任务;告诉 Jenkins 需要在管道或项目中做什么的基本步骤。 |
| Publisher | 完成所有配置步骤后的构建部分,包括发布报告、发送通知等 |
| Trigger | 触发新 Pipeline 运行或构建的标准 |
初始化设置
在首次完成安装之后,会进入安装向导。安装向导会引导用户完成几个快速"一次性"步骤来解锁 Jenkins, 选择安装插件对其进行自定义,并创建第一个可以继续访问 Jenkins 的管理员用户。
解锁 Jenkins
当第一次访问新的 Jenkins 实例时,系统会要求使用自动生成的密码对其进行解锁。
- 浏览到
http://localhost:8080
(或安装时为 Jenkins 配置的任何端口),并等待 解锁 Jenkins 页面出现。
- 从 Jenkins 控制台日志输出中,复制自动生成的字母数字密码(在两组星号之间)。
注意:
- 如果以容器方式运行 Jenkins,则可以从Jenkins的启动日志中查看到该密码。
- 如果丢失了首次启动的日志,还可以从安装目录 /var/jenkins_home/secrets/initialAdminPassword 中找到该密码
- 在 解锁Jenkins 页面上,将此 密码 粘贴到管理员密码字段中,然后单击 继续 。
安装 Jenkins 插件
解锁 Jenkins 之后,在 Customize Jenkins 页面内, 可以安装任何数量的有用插件作为初始步骤的一部分。
创建第一个管理员账号
在完成插件安装之后,Jenkins 要求创建第一个管理员用户。 出现" 创建第一个管理员用户 "页面时,请在各个字段中指定管理员用户的详细信息,然后单击 保存完成 。 当 Jenkins准备好了 出现时,单击 开始使用 Jenkins。
注意:
该页面可能长时间显示 Jenkins几乎准备好了! 如果是这样,请单击 重启 。如果该页面在一分钟后没有自动刷新,请使用 Web 浏览器手动刷新页面。
主页信息概览
如图所示是 Jenkins 的主页,右侧部分是默认的用户视图,展示的内容是属于当前用户的所有项目(任务)列表和简要信息。
红框中图例表示的是项目或任务的构建状态,更多图例所表示的含义参考如下:
左下角是构建菜单队列,展示的是目前排队中的构建任务和当前执行中的构建任务状态(两个 executor)。
主要功能菜单
新建任务
点击新建任务可以看到如下菜单,该页面是创建新任务的入口。一般情况下,选择构建一个自由风格的软件项目即可,如果需要使用 pipeline 的方式来构建,则可以选择流水线。本手册主要针对自由风格和流水线两种任务的创建页面做说明。
自由风格项目
自由风格的项目的创建页面如上图所示,主要分为如下几个部分:
- **General:**项目的总体设置
- 描述:对项目的描述信息
- GitHub项目:如果是 GitHub 管理的项目,可以勾选此处
- This build requires lockable resources:用来阻止多个构建在同一时间试图使用同一个资源。这里的资源可能是一个节点、一个代理节点、一组节点或代理节点的集合,或者仅仅是一个用于上锁的名字
- Throttle builds:限制一定时间周期内,两次构建间隔的最短时间(从上次构建后开始算,时间不到不允许执行构建)
- 丢弃旧的构建:通过设置最长保留天数和最多记录数量,来决定什么时候丢弃比较老的构建记录
- 参数化构建过程:允许用户通过界面输入一个或多个将被传递到构建中的输入,参数类型包括文本,字符,多选框等等
- 在必要的时候并发构建:默认情况下,一个项目同一时间只进行一次构建,勾选此功能可并发进行
- 限制项目的运行节点:通过标签 label 来限制构建运行在那些节点或容器中
- **源码管理:**项目的源码配置
- 无:就是没有源码管理工具
- Git:Git 插件为 Jenkins 项目提供了基本的 Git 操作。它可以轮询、获取、检出存储库的内容。
- Repository URL: Git 仓库地址
- Credentials:用于检出源码的凭据,可通过"添加"按钮新增
- Branches to build:要构建的分支列表。当每个作业只构建一个分支时,Jenkins作业是最有效的。
- 源码库浏览器:在构建"变更"处添加一个链接到外部系统查看变化(不常用,默认即可)
- **构建触发器:**选择由哪些方式触发构建任务
- 触发远程构建(例如使用脚本):通过访问一个特殊的预定义URL(预置脚本)来触发新的构建
- 其他工程构建后触发:在其他构建任务完成后,为此项目触发一个新的构建任务
- 定时构建:提供类似cron的特性来定期执行此项目。
- GitHub hook trigger for GITScm polling:用于GITScm轮询的GitHub钩子触发器,只要 Github上有提交就会触发向 Jenkins 发送构建请求的钩子,从而触发构建
- 轮询 SCM:与 GitHub 钩子不同,该选项设置的是由 Jenkins 主动发起轮询,如果发现源码仓库有新的修改,就会触发构建
- **构建环境:**和构建环境相关的配置
- Delete workspace before build starts:在构建之前清空工作空间
- Use secret text(s) or file(s):通过新增来绑定一系列凭证信息,并允许您在shell构建步骤或类似步骤中获取并使用它们。
- Add timestamps to the Console Output:在控制台输出信息中添加时间戳信息
- Bind file parameter:将可选参数以文件形式绑定到从工作区可访问的本地文件中
- Inspect build log for published Gradle build scans:检查已发布的Gradle构建扫描的构建日志
- Terminate a build if it's stuck:如果构建任务卡住就终止构建
- With Ant:为 Jenkins 准备一个使用 Apache Ant 运行构建的环境。
- **Build Steps:**定义构建步骤
- 通过选择不同类型的构建步骤,可以执行如 Groovy 脚本、Ant 脚本、Windows 批处理命令、Shell 命令等动作,构建步骤可以添加多个,会按顺序执行
- **构建后操作:**定义构建完成后要执行的动作
- 构建完成后,可以推送 HTML 的报告、开始另一项构建、发送 E-mail 通知、清理工作空间等等
流水线项目
- **general:**项目的总体设置
- GitHub项目:如果是 GitHub 管理的项目,可以勾选此处
- Preserve stashes from completed builds:保存项目最近完成的构建的内容,供下次使用
- Throttle builds:限制一定时间周期内,两次构建间隔的最短时间(从上次构建后开始算,时间不到不允许执行构建)
- 不允许并发构建:同一时间不会存在两份构建任务
- 丢弃旧的构建:通过设置最长保留天数和最多记录数量,来决定什么时候丢弃比较老的构建记录
- 参数化构建过程:允许用户通过界面输入一个或多个将被传递到构建中的输入,参数类型包括文本,字符,多选框等等
- 当 master 重启后,不允许恢复流水线:主控节点重启后,不会继续构建任务
- 流水线效率、持久保存设置覆盖:更改运行pipeline的默认持久性模式,是对流水线运行性能和Jenkins意外中断后恢复流水线的能力的设置
- 构建触发器:
- 触发远程构建(例如使用脚本):通过访问一个特殊的预定义URL(预置脚本)来触发新的构建
- 其他工程构建后触发:在其他构建任务完成后,为此项目触发一个新的构建任务
- 定时构建:提供类似cron的特性来定期执行此项目。
- GitHub hook trigger for GITScm polling:用于GITScm轮询的GitHub钩子触发器,只要 Github上有提交就会触发向 Jenkins 发送构建请求的钩子,从而触发构建
- 轮询 SCM:与 GitHub 钩子不同,该选项设置的是由 Jenkins 主动发起轮询,如果发现源码仓库有新的修改,就会触发构建
- 静默期:如果设置此选项,一个计划中的构建在开始之前需要等待选项中设置的秒数后才会开始。
- 高级项目选项:
- 显示的名称:项目对外显示的名称,仅用于显示目的,不需要是唯一的。
- **流水线:**以流水线语法构成的脚本文件定义构建流程,可以直接在输入框内写入脚本,也可以从检出的源码中的 Jenkinsfile 中读取
*
*
*
- SCM:指定从哪里检出源码仓库
- Git:一般情况下都使用 Git 作为源码仓库管理
- Repository URL: Git 仓库地址
- Credentials:用于检出源码的凭据,可通过"添加"按钮新增
- Branches to build:要构建的分支列表。当每个作业只构建一个分支时,Jenkins作业是最有效的。
- 源码库浏览器:在构建"变更"处添加一个链接到外部系统查看变化(不常用,默认即可)
- 脚本路径:指定从那个文件路径获取,一般情况下,约定项目根目录下的 Jenkinsfile 文件作为脚本
用户列表
展示当前 Jenkins 环境中所有的用户
构建历史
所有项目的构建历史信息
项目关系
拥有相互依赖的项目时,Jenkins 可以通过使用指纹支持创建的记录跟踪上游项目的哪个构建被下游项目的哪个构建使用。要实现此功能,需要满足以下条件:
- 上游项目记录其构建工件的指纹。
- 下游项目记录它所使用的上游文件的指纹。
检查文件指纹
通过上传一个 jar 包,检查其版本号以及是否是由当前 Jenkins 构建而来的
系统管理
系统配置
系统配置
配置系统全局设置,如 Jenkins 存储所有数据文件的的目录等全局系统信息,一般情况下保持默认配置即可
全局工具配置
工具配置,包括他们的安装位置和自动安装工具
设置例如 Maven、JDK、Git、Ant 等工具的安装位置,或者通过配置安装工具实现自动安装
插件管理
添加、删除、禁用或启用 Jenkins 功能扩展插件
- 更新插件:展示可更新插件列表
- 可用插件:展示全部可使用插件列表
- 已安装插件:展示已安装插件列表,可在此禁用或启用指定插件
- 高级设置:设置插件服务器的代理地址、用户名、密码或通过手动上传插件包安装插件
节点管理
添加、删除、控制和监视系统运行任务的节点。
在使用jenkins的时候,建议是将任务运行在 slave 上面。并非 master 节点不能跑任务,而是 master 节点主要是处理调度构建作业,把构建分发到 slave 节点进行实际执行,监视 slave 节点的状态(必要时让它们进行上线或者离线),记录和发布构建产物。
- 新建节点:
- 首先输入节点名称(自定义)
- 其次填写节点信息
*
- Host key verification Strategy:主机密钥验证策略
- 【SSH】密码登录和免密登录
- 此处如果为了方便,可以选择 Non Verifying verification Strategy,也就是不做验证
- 添加凭据-用户名和密码
- Configure Clouds:配置云信息,如 Kubernetes,参考 【Jenkins】弹性启动 Jenkins-slave 完成构建任务
- 节点监控:设置节点需要监控的内容
安全
全局安全配置
Jenkins 的安全配置,定义谁可以访问或使用系统
一般情况下,使用默认设置即可,关闭自由注册功能,由管理员负责创建新的账号分发给不同用户
Manage Credentials 凭据管理
可以对 Jenkins 使用过程中需要用到的各种凭据信息做管理,包括凭据的作用域管理(全局凭据或仅仅在某个节点有效)和凭据的增删改查
- 添加凭据
- 类型:凭据的类型
Username with password
:用户名和密码
SSH Username with private key
: 使用SSH
用户和密钥Secret file
:需要保密的文本文件,使用时Jenkins
会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file
就会被删除。Secret text
:需要保存的一个加密的文本串,如钉钉机器人或Github
的api token
Certificate
:通过上传证书文件的方式
- 更新
凭据配置
管理哪些凭据类型可见,一般情况下保持默认配置即可
管理用户
创建、删除或修改 Jenkins 用户
- 新建用户
- 设置
- 当前用户设置,一般情况下保持默认设置即可
in-process script approval 进程内的脚本批准
- 为了保护 Jenkins 免受恶意脚本的执行,当检测到脚本中出现不安全的语句时,会被 Jenkins 拒绝,报错举例:
3. 如果希望继续执行,需要由管理员批准该脚本是否可以执行
状态信息
系统环境
显示系统环境信息,系统属性、环境变量、安装的插件、内存使用情况
系统日志
从 java.util.logging 方法捕获的 Jenkins 系统日志
负载统计
检查资源利用情况,是否需要更多计算机来帮助构建
关于Jenkins
查看历史版本以及 License
问题排查
Jenkins 的所有功能,几乎可以说都是通过插件来实现的。当老版本插件安装过程中产生的配置文件中定义的变量在新版本插件中已经失效,而当前 Jenkins 无法读取的时候,就会提示【您的存储中有无法读取或者旧的数据格式。通过Jenkins的系统管理中的管理旧数据可以看到详细说明】,这是为了让 Jenkins 能够跳过一些插件启动的错误从而能够继续正常启动。而保留旧数据的目的是为了方便插件降级之后可以马上读取这些数据
工具和动作
读取设置
放弃当前内存中所有的设置内容并从配置文件中重新读取,仅用于手动修改了配置文件的情况下,页面也会给出确认提示
Jenkins 命令行接口
从命令行或脚本访问或管理 Jenkins
脚本命令行
执行用于管理或者故障检测的任意脚本命令
准备关机
停止执行新的构建任务以安全的关闭计算机,提供优雅的关闭策略,防止在还有构建任务的时候突然关闭