Jenkins Plugins常用插件推荐
前言
开源版本的 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 用户权限管理是 Jenkins Administration 中非常很重要的环节,由于大部分企业都会有自己的域控管理,所以和 LDAP 集成并基于用户组实现权限模型设计与管理是企业级 Jenkins 实践的重要内容。
- LDAP 这个插件允许使用 LDAP 对用户进行认证,LDAP 服务器可以为 Active Directory 或者 OpenLDAP。
- Active Directory 这个插件允许使用 Active Directory 对用户进行认证,同时结合诸如 Matrix Authorization Strategy 插件,可以识别用户所在的所有用户组,对用户授权进行灵活配置。
基于 Windows Active Directory 进行域管理的企业,推荐采用 Active Directory。 - GitHub Authentication 这个插件提供了使用 GitHub 进行用户认证和授权的方案。
- Gitlab Authentication 这个插件提供了使用 GitLab 进行用户认证和授权的方案。
- Matrix Authorization Strategy 这个插件提供了基于矩阵的授权策略,支持全局和项目级别的配置。
- Role-based Authorization Strategy 这个插件提供了一种基于角色(Role)的用户权限管理策略,支持创建 global 角色、Project 角色、Slave 角色,以及给用户分配这些角色。这款插件是最常用的 Jenkins 权限策略和管理插件。
代码管理
Jenkins 项目中配置 Source Code Management 去下载代码进行构建任务,是非常普遍的应用场景。Jenkins 插件支持很多 SCM 的系统,使用最常见的是 Git 和 SVN。
- Git 支持使用 Github、GitLab、Gerrit 等系统管理代码仓库。
- Subversion 支持 Subversion 系统管理源代码。
项目及视图
Jenkins 中对 Project 和 view 的管理,是用户日常工作中使用很多的功能。
- Folder 这个插件支持用户使用目录管理项目,目录支持嵌套,并且支持目录中创建视图。
- List view Jenkins 默认支持 List 类型的视图,用户可以创建 List 视图过滤所关心的项目。
- Sectioned View 这个插件支持一种新的视图,视图可以分为多个部分,每部分可以单独配置显示所选择的项目信息。
- Nested View 这个插件支持一种新的视图,其表示直接显示项目,而是以目录图标显示所包含的子视图,每个子视图显示所选项目信息。
- Build Pipeline 这个插件提供了一种 Build Pipeline 视图,用于显示上、下游项目构建的关系。
构建触发
Jenkins 支持多种 Build 触发方式,尤其一些自动化触发方式非常有用
- Build periodically,Jenkins 内置功能,可以设置类似 crontab 时间,周期性地自动触发构建。Poll SCM,Jenkins 内置功能,类似 Build periodically,可以设置类似 crontab 时间,不同的是不是直接进行构建,而是周期性地在后台检查所配置的 SCM 有没有更新,只有当有代码更新时才会触发构建。
- Trigger builds remotely (e.g., from scripts),Jenkins 内置功能,远程触发构建,通过设置 token 可以支持远程脚本中触发 Jenkins 构建。
- Gerrit Trigger 这个插件将 Jenkins 集成到 Gerrit code review 中,支持 Jenkins 配置 Gerrit 服务器等信息,实现 Gerrit event 触发 Jenkins 构建。
- GitLab 这个插件将 Jenkins 集成到 GitLab web hook 中,支持 Gitlab 分支及 Merge Request 等相关事件触发 Jenkins 构建。
- GitHub Integration 这个插件将 Jenkins 集成到 GitHub 中,支持 Gitgub 分支及 Pull requests 触发 Jenkins 构建。
- JIRA Trigger 这个插件将 Jenkins 集成到 Jira WebHooks 中,支持 Jira issue 的状态等变化时触发 Jenkins 构建。
构建参数
Jenkins 除了支持普通的参数类型(布尔型、字符串型、多行文本型、选择型和文件型 )外,还有一些插件支持更加丰富实用的参数类型,比如参数间动态关联、多层级参数、隐藏参数等 。
- nodelabelparameter 这个插件增加了一个新的参数类型,Node 和 Label,从而使用户通过参数可以选择项目构建运行的节点。
其他插件不一一列举,可以查看插件说明
构建任务及环境
围绕构建任务,有许多小的插件,却提供了一些实用的功能
- Workspace Cleanup 这个插件支持在构建前后 删除或者部分删除 workspace
- description setter 这个插件支持正则表达式匹配构建 log 输出,设置构建的描述
- build-name-setter 这个插件支持设置构建的显示名字,而不是默认的为 #1,#2,……,#buildnum
- Environment Injector 这个插件支持在构建任务的不同阶段插入环境变量,并且在构建结束导出所有的环境变量等功能。
构建通知
把构建状态及时地通知用户,是 Jenkins 的一个必不可少的功能。Jenkins 支持多种主动和被动的通知方式。
- Mailer 这个插件支持基本的邮件通知功能,比如构建失败和构建恢复成功可以发送邮件通知给相关人员。
- Email Extension 这个插件是邮件通知的扩展,支持定制邮件内容,触发条件以及邮件接收者,功能比基本邮件通知要灵活强大的多。
- Slack Notification 这个插件支持把构建结果推送到 Slack channel。
容器化 Slave
Jenkins 的 Master-Slave 架构实现了分布式构建,可以充分的横向扩展 Slave 来提升构建能力,将 Slave 容器化是目前主流的构建环境标准化、集群化和弹性化的方式。
- https://plugins.jenkins.io/docker-plugin 这个插件可以配置 docker host ,从而动态的提供 Jenkins Agent(Slave),运行构建后再销毁这个 slave。
- https://plugins.jenkins.io/kubernetes 这个插件支持利用 Kubernetes cluster 动态的提供 Jenkins Agent(Slave),利用 Kubernetes 调度机制来优化 Jenkins 负载等。
Admin 相关插件
- Configuration Slicing https://plugins.jenkins.io/configurationslicing 这个插件支持批量修改项目配置
- Mask Passwords https://plugins.jenkins.io/mask-passwords 这个插件支持遮挡构建 log 输出的 password 等敏感信息
- 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 |