前言

开源版本的 Jenkins 具有三大能力:Master-Slave 的分布式构建调度能力、Pipeline 编排能力、强大的开源生态(插件)能力。2017 年 4 月,Jenkins 创始人 KK(Kohsuke Kawaguchi )来到中国,交流中他也明确表示 Jenkins 的成功主要取决于其开源生态系统,Jenkins 有 1400 多个插件可供使用。因为有开源的插件生态系统的存在,Jenkins 要用得好,插件一定是不能少的,需要我们充分发现和使用插件来实现我们的需求,而不是重复造轮子,自己去实现。

Jenkins Plugins常用插件推荐

更新历史

2019年12月16日 - 初稿

阅读原文 - https://wsgzao.github.io/post/jenkins-plugins/

扩展阅读

Jenkins Plugins Index


用户及权限

Jenkins 用户权限管理是 Jenkins Administration 中非常很重要的环节,由于大部分企业都会有自己的域控管理,所以和 LDAP 集成并基于用户组实现权限模型设计与管理是企业级 Jenkins 实践的重要内容。

  1. LDAP 这个插件允许使用 LDAP 对用户进行认证,LDAP 服务器可以为 Active Directory 或者 OpenLDAP。
  2. Active Directory 这个插件允许使用 Active Directory 对用户进行认证,同时结合诸如 Matrix Authorization Strategy 插件,可以识别用户所在的所有用户组,对用户授权进行灵活配置。
    基于 Windows Active Directory 进行域管理的企业,推荐采用 Active Directory。
  3. GitHub Authentication 这个插件提供了使用 GitHub 进行用户认证和授权的方案。
  4. Gitlab Authentication 这个插件提供了使用 GitLab 进行用户认证和授权的方案。
  5. Matrix Authorization Strategy 这个插件提供了基于矩阵的授权策略,支持全局和项目级别的配置。
  6. Role-based Authorization Strategy 这个插件提供了一种基于角色(Role)的用户权限管理策略,支持创建 global 角色、Project 角色、Slave 角色,以及给用户分配这些角色。这款插件是最常用的 Jenkins 权限策略和管理插件。

Jenkins 自动化部署 - 权限管控篇 (六)

代码管理

Jenkins 项目中配置 Source Code Management 去下载代码进行构建任务,是非常普遍的应用场景。Jenkins 插件支持很多 SCM 的系统,使用最常见的是 Git 和 SVN。

  1. Git 支持使用 Github、GitLab、Gerrit 等系统管理代码仓库。
  2. Subversion 支持 Subversion 系统管理源代码。

项目及视图

Jenkins 中对 Project 和 view 的管理,是用户日常工作中使用很多的功能。

  1. Folder 这个插件支持用户使用目录管理项目,目录支持嵌套,并且支持目录中创建视图。
  2. List view Jenkins 默认支持 List 类型的视图,用户可以创建 List 视图过滤所关心的项目。
  3. Sectioned View 这个插件支持一种新的视图,视图可以分为多个部分,每部分可以单独配置显示所选择的项目信息。
  4. Nested View 这个插件支持一种新的视图,其表示直接显示项目,而是以目录图标显示所包含的子视图,每个子视图显示所选项目信息。
  5. Build Pipeline 这个插件提供了一种 Build Pipeline 视图,用于显示上、下游项目构建的关系。

构建触发

Jenkins 支持多种 Build 触发方式,尤其一些自动化触发方式非常有用

  1. Build periodically,Jenkins 内置功能,可以设置类似 crontab 时间,周期性地自动触发构建。Poll SCM,Jenkins 内置功能,类似 Build periodically,可以设置类似 crontab 时间,不同的是不是直接进行构建,而是周期性地在后台检查所配置的 SCM 有没有更新,只有当有代码更新时才会触发构建。
  2. Trigger builds remotely (e.g., from scripts),Jenkins 内置功能,远程触发构建,通过设置 token 可以支持远程脚本中触发 Jenkins 构建。
  3. Gerrit Trigger 这个插件将 Jenkins 集成到 Gerrit code review 中,支持 Jenkins 配置 Gerrit 服务器等信息,实现 Gerrit event 触发 Jenkins 构建。
  4. GitLab 这个插件将 Jenkins 集成到 GitLab web hook 中,支持 Gitlab 分支及 Merge Request 等相关事件触发 Jenkins 构建。
  5. GitHub Integration 这个插件将 Jenkins 集成到 GitHub 中,支持 Gitgub 分支及 Pull requests 触发 Jenkins 构建。
  6. JIRA Trigger 这个插件将 Jenkins 集成到 Jira WebHooks 中,支持 Jira issue 的状态等变化时触发 Jenkins 构建。

构建参数

Jenkins 除了支持普通的参数类型(布尔型、字符串型、多行文本型、选择型和文件型 )外,还有一些插件支持更加丰富实用的参数类型,比如参数间动态关联、多层级参数、隐藏参数等 。

  1. nodelabelparameter 这个插件增加了一个新的参数类型,Node 和 Label,从而使用户通过参数可以选择项目构建运行的节点。
    其他插件不一一列举,可以查看插件说明

构建任务及环境

围绕构建任务,有许多小的插件,却提供了一些实用的功能

  1. Workspace Cleanup 这个插件支持在构建前后 删除或者部分删除 workspace
  2. description setter 这个插件支持正则表达式匹配构建 log 输出,设置构建的描述
  3. build-name-setter 这个插件支持设置构建的显示名字,而不是默认的为 #1,#2,……,#buildnum
  4. Environment Injector 这个插件支持在构建任务的不同阶段插入环境变量,并且在构建结束导出所有的环境变量等功能。

构建通知

把构建状态及时地通知用户,是 Jenkins 的一个必不可少的功能。Jenkins 支持多种主动和被动的通知方式。

  1. Mailer 这个插件支持基本的邮件通知功能,比如构建失败和构建恢复成功可以发送邮件通知给相关人员。
  2. Email Extension 这个插件是邮件通知的扩展,支持定制邮件内容,触发条件以及邮件接收者,功能比基本邮件通知要灵活强大的多。
  3. Slack Notification 这个插件支持把构建结果推送到 Slack channel。

容器化 Slave

Jenkins 的 Master-Slave 架构实现了分布式构建,可以充分的横向扩展 Slave 来提升构建能力,将 Slave 容器化是目前主流的构建环境标准化、集群化和弹性化的方式。

  1. https://plugins.jenkins.io/docker-plugin 这个插件可以配置 docker host ,从而动态的提供 Jenkins Agent(Slave),运行构建后再销毁这个 slave。
  2. https://plugins.jenkins.io/kubernetes 这个插件支持利用 Kubernetes cluster 动态的提供 Jenkins Agent(Slave),利用 Kubernetes 调度机制来优化 Jenkins 负载等。

Admin 相关插件

  1. Configuration Slicing https://plugins.jenkins.io/configurationslicing 这个插件支持批量修改项目配置
  2. Mask Passwords https://plugins.jenkins.io/mask-passwords 这个插件支持遮挡构建 log 输出的 password 等敏感信息
  3. Backup https://plugins.jenkins.io/backup 这个插件添加备份功能到 Jenkins management

个人推荐的通用插件

|Name |Link |
|— |— |
|Google Login Plugin |https://plugins.jenkins.io/google-login |
|Role-based Authorization Strategy |https://plugins.jenkins.io/role-strategy |
|Periodic Backup |https://plugins.jenkins.io/periodicbackup |
|Notification |https://plugins.jenkins.io/notification |
|Git Parameter |https://plugins.jenkins.io/git-parameter |
|AnsiColor |https://plugins.jenkins.io/ansicolor |
|SSH Agent |https://plugins.jenkins.io/git-parameter |
|Build Name and Description Setter |https://plugins.jenkins.io/build-name-setter |
|Publish Over SSH |https://plugins.jenkins.io/publish-over-ssh |
|user build vars |https://plugins.jenkins.io/build-user-vars-plugin |
|Throttle Concurrent Builds |https://plugins.jenkins.io/throttle-concurrents |
|Active Choices |https://plugins.jenkins.io/uno-choice |
|Rebuilder |https://plugins.jenkins.io/rebuild |

参考文章

Jenkins 自动化部署 - 安装篇 (一)

jenkins 常用插件和配置项介绍和使用

文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. 用户及权限
  4. 4. 代码管理
  5. 5. 项目及视图
  6. 6. 构建触发
  7. 7. 构建参数
  8. 8. 构建任务及环境
  9. 9. 构建通知
  10. 10. 容器化 Slave
  11. 11. Admin 相关插件
  12. 12. 个人推荐的通用插件
  13. 13. 参考文章