1. 介绍
刚开始接触Jenkins,大部分都会从插件开始吧。我也是一样。被各种插件弄的懵逼。
本篇内容只是简单介绍各种插件的作用。
2. 常见插件
Jenkins 在初始化的时候,会推荐一些插件让我们进行安装。这些插件都是Jenkins社区推荐的,大部分人都会使用到的插件。
还有一些插件,是我们自己在实际使用过程中,根据公司需求和个人需求进行安装的一些插件。
下面也是根据这两种进行一个介绍。如果,工作使用的插件使用的频率比较大,也可能会被Jenkins社区采纳进行推荐。
有些差距名称后面有Plugin ,有些插件名称后面没有Plugin。 大家自己进行评判哦。
下面配置的目录,我是按照插件完整名称定义的。
2.1 Jenkins推荐插件
Jenkins自带推荐安装的一些插件例如Git,Folders,BuildTimeout,Credentials Binding,
Timestamper,Workspace Cleanup,Ant,Gradle,Pipeline,GitHub Branch Source等等
这些插件可以说,是我们的Jenkins必备的插件了。在我们初始化的时候,就应该安装好,如果没有安装好。就只能自己通过系统管理中进行安装了。下面简单介绍介绍上面的一些插件吧。
Folders Plugin
当前最新版本: 6.773.vd2dcc704ee7e。 (更新频率比较高)
插件地址:https://plugins.jenkins.io/cloudbees-folder/
作用:该插件允许用户创建“文件夹”来组织任务。用户可以定义自定义分类法(例如,按项目类型、组织类型)。文件夹是可嵌套的,您可以在文件夹中定义视图。
安装了该插件之后,我们在新建任务(新建 Item)时,可以新建任务类型中会多一个文件夹类型的选项。
OWASP Markup Formatter Plugin
当前版本:2.7
插件地址:https://plugins.jenkins.io/antisamy-markup-formatter/
作用:该插件允许使用安全的HTML子集格式化Jenkins中的作业、构建、视图等描述。该插件使用OWASP Java HTML Sanitizer和允许用户提交文本中的有限HTML标记的基本策略来清理HTML源。
简单描述就是,用户如果在构建过程中输入的文本为HTML,这个插件就可以限制这些输入文本中的HTML标签。避免该标准造成编译问题。
Build Timeout
当前版本:1.24
插件地址:https://plugins.jenkins.io/build-timeout/
作用:该插件允许您在构建时间过长时自动终止构建。此插件不适用于管道(Pipelines),管道有自己的工作流超时步骤。
我们可以在Build Steps中添加 Run with timeout 运行构建超时,配置超时时间,以及超时之后的执行任务等。
可以调用DingTalk发送超时通知。
Credentials Binding Plugin
当前版本:523.vd859a_4b_122e6
插件地址:https://plugins.jenkins.io/credentials-binding/
作用:该插件允许将凭据绑定到环境变量,以便在其他构建步骤中使用。该插件提供了一种简单的方法,可以打包所有作业的秘密文件和密码,并在构建过程中使用单个环境变量访问它们。
我们在系统管理中添加的凭证控制等等,都是可以说基于该插件配置的。这个插件算是一个底层插件了。
Timestamper
当前版本: 1.20
插件地址:https://plugins.jenkins.io/timestamper/
作用:该插件允许设置任务log时间戳,将时间戳添加到Jenkins作业的控制台输出中。
在构建环境中勾选:Add timestamps to the Console Output 就可以让我们的控制台输出log中每条记录配置上时间戳了。如果时间戳显示的日期格式不符合需求,我们可以在系统管理中的Configure System(系统配置)中找到Timestamper 然后定义我们自己的时间戳显示效果,也可以定义Pipeline中的显示效果。
Workspace Cleanup Plugin
当前版本:0.43
插件地址:https://plugins.jenkins.io/ws-cleanup/
作用:该插件用来清理工作空间。
我们在构建过程中jenkins会给我们生成一个workspace的工作空间,里面会存储我们在构造过程中产生的各种文档(特别是Git拉取到的代码)。该插件就允许我们在每次构造前,将该工作空间清理干净。(PS:我们每次构造之后的构建结果,不会存储在该工作空间中,清理不会造成以前构造的结果被删除)。
在构建环境中勾选:Delete workspace before build starts 就可以在每次构建时清理了。
Ant Plugin
当前版本:481.v7b_09e538fcca
插件地址:https://plugins.jenkins.io/ant/
作用:该插件用来给Jenkins添加Apache Ant的支持。
我们项目编译构造过程中如果要使用到Ant的支持,那么这个插件就是一个核心插件了。有了它Jenkins 才能支持Ant。下面的Gradle和它类似。
Gradle Plugin
当前版本:2.0
插件地址:https://plugins.jenkins.io/gradle/
作用:该插件用来给Jenkins添加Gradle的支持。
我们在编译Android项目的时候,就是通过Gradle进行自动编译构建的。它和Ant 和Maven是一样的。如果要编译Android项目。那么该插件就是必须的。
Pipeline
当前版本:590.v6a_d052e5a_a_b_5
插件地址:https://plugins.jenkins.io/workflow-aggregator/
作用:该插件给Jenkins提供Pipeline功能。这个插件和它依赖的其他插件,整体组成了Jenkins 2.0的Pipeline功能。
例如:
Pipeline Graph Analysis Plugin : 提供 REST API的pipeline访问和管理功能。
Pipeline: API:定义管道API的插件。
Pipeline: Basic Steps:添加管道步骤“build”以触发其他作业的生成。
Pipeline: Declarative:一个顽固的声明性的管道。
等等,配套的插件。这里就不扩展了。
GitHub Branch Source Plugin
当前版本:1695.v88de84e9f6b_9
插件地址:https://plugins.jenkins.io/github-branch-source/
作用:该插件允许从一个或多个GitHub用户或组织创建基于存储库结构的新项目。
要使用该插件,我们在创建item的时候,类型选择构建一个多配置项目(Multi-configuration project)或者多管道项目(Multibranch Pipeline)等。
Git
当前版本:4.12.1
插件地址:https://plugins.jenkins.io/git/
作用:该插件为Jenkins项目提供了基本的git操作。它可以轮询、提取、签出、分支、列表、合并、标记和推送存储库。
我们其实安装该插件,就可以实现Git项目的代码拉取了。
这个是最基本核心的插件。后面Git client,Git server Plugin, GitHub plugin ,GitLab Plugin都是针对具体功能需求,减少操作步骤而封装的各种专用场景下的插件。
SSH Build Agents plugin
当前版本:2.854.v7fd446b_337c9
插件地址:https://plugins.jenkins.io/ssh-slaves/
作用:该插件为Jenkins项目提供通过SSH启动代理的方法。
Matrix Authorization Strategy Plugin
当前版本:3.1.5
插件地址:https://plugins.jenkins.io/matrix-auth/
作用:该插件在Jenkins中实现细粒度访问控制。
我们可以用这个插件实现各种安全选项控制,给与不同用户访问权限,已经编辑和禁用相关安全工配置选项。
这个插件是给管理员用的。普通使用者使用不到。
PAM Authentication plugin
当前版本:1.10
插件地址:https://plugins.jenkins.io/pam-auth/
作用:该插件在Jenkins中实现了Unix可插拔身份验证模块(PAM)的支持。
PAM的完整单词为:Pluggable Authentication Module
LDAP Plugin
当前版本:2.12
插件地址:https://plugins.jenkins.io/ldap/
作用:该插件提供了另一种使用LDAP验证用户的方法。它可以与Active Directory或OpenLDAP等LDAP服务器一起使用。
我们如果用不到的话,是可以禁用该插件的。
LDAP指轻量目录访问协议,完整单词为:Lightweight Directory Access Protocol
Email Extension Plugin
当前版本:2.92
插件地址:https://plugins.jenkins.io/email-ext/
作用:该插件允许您配置电子邮件通知的各个方面。您可以自定义电子邮件的发送时间、收件人以及电子邮件内容。
我们在Jenkins中实现的各种邮件通知功能,通常就是由该插件实现支持的。
Mailer Plugin
当前版本:438.v02c7f0a_12fa_4
插件地址:https://plugins.jenkins.io/mailer/
作用:此插件允许您为生成结果配置电子邮件通知。
Mailer Plugin是一个提供了基本邮件通知的插件,但是该插件实现的功能比较少和简单。例如我们想自定义邮件标题内容等。那么就可以使用Email Extension Plugin插件了。Mailer Plugin这个是Jenkins系统插件。
Localization: Chinese (Simplified)
当前版本:1.0.24
插件地址:https://plugins.jenkins.io/localization-zh-cn/
作用:该插件为Jenkins 提供了简体中文语言包。
我们Jenkins中的各种配置项,有些是中文有些是英文,那就是这个插件包在生效。它对部分功能实现了翻译,部分功能没有翻译造成的。我们如果想使用纯英文版本可以关闭该插件。
推荐插件,到这里就介绍差不多了。我们如果不明白插件的功能可以通过插件地址,去看详细的介绍,唯一不美好的地方在于,详细介绍中都是英文的。
2.2 工作使用推荐插件
把系统推荐的插件介绍完毕后,下面介绍一些工作中用到的。或者帮助我们提升Jenkins理解的插件。
这些插件就属于仁者见仁了。
Environment Injector Plugin
当前版本:2.881.v37c62073ff97
插件地址:https://plugins.jenkins.io/envinject/
作用:可以在编译之后列出构造过程中的环境变量,包括参数化构造的环境变量。
同时,也可以为任务设置自定义环境变量。例如可以将密码安全的注入到构造过程中。
Build Environment Plugin
当前版本:1.7
插件地址:https://plugins.jenkins.io/build-environment
作用:这个插件显示了关于构建环境的信息,并提供了比较两个构建环境的选项。它可以将我们整个构建过程中的全局变量全部展示出来。相较于Environment Injector Plugin 插件,它能够显示更多的变量。
我们如果在使用Groovy脚本的时候,不知道有哪些全局属性。或者我们构造过程中用的很多插件,但是不知道那些插件有没有暴露一些全局参数。都可以用这个接口进行测试和清理。
同时它还能将参数数据进行一个记录。跟随每次构建的输出结果进行展示。
GitLab Plugin
当前版本:1.5.36
插件地址:https://plugins.jenkins.io/gitlab-plugin/
作用:该插件允许GitLab在提交代码或打开/更新合并请求时触发Jenkins中的构建。它还可以将构建状态发送回GitLab。
我们如果项目是通过GitLab进行控制的。那么可以用这个插件来实现,git提交后自动构建。
同时也可以配置GitLab的相关认证。
Upload to pgyer
当前版本:2.1
插件地址:https://plugins.jenkins.io/upload-pgyer/
作用:可以将我们编译后的Android应用或者ios应用上传到蒲公英平台。接口上传完毕后,会自动返回相关下载链接之类的。
Groovy Postbuild
当前版本:2.5
插件地址:https://plugins.jenkins.io/groovy-postbuild/
作用:该插件将会在Jenkins JVM中执行一个groovy脚本。我们可以通过Groovy脚本执行一些事务,并修改构建结果。
例如我在这篇文章中https://zinyan.com/?p=383 通过groovy脚本实现了钉钉消息的发送,就是一个http请求过程的触发。
如果我们使用Pipeline插件,可以不用额外安装Groovy Postbuild因为有一个Pipeline: Groovy
build user vars plugin
当前版本:1.9
插件地址:https://plugins.jenkins.io/build-user-vars-plugin/
作用:该插件将会自动生成6个环境变量。让我们在后面脚本等地方使用。
Variable | Description |
BUILD_USER | Full name (first name + last name) 就是我们的登录用户名 |
BUILD_USER_FIRST_NAME | First name 用户名开头 |
BUILD_USER_LAST_NAME | Last name 用户名结尾 |
BUILD_USER_ID | Jenkins user ID 用户id |
BUILD_USER_GROUPS | Jenkins user groups 用户分组 |
BUILD_USER_EMAIL | Email address 用户邮件地址 |
有些构建过程,需要知道是谁操作的。那么这个插件就可以便捷创建了。
DingTalk
当前版本:2.4.10
插件地址:https://plugins.jenkins.io/dingding-notifications/
作用:该插件可以将编译过程通过钉钉机器人发送到我们的钉钉群中。
这个插件安装之后,必须重启Jenkins才能在具体任务中生效的。
NodeJs Plugin
当前版本:1.5.1
插件地址:https://plugins.jenkins.io/nodejs/
作用:该插件为NodeJs & npm 项目提供Jenkins集成。前端页面编译构造过程中会需要NodeJs。
这个插件就必不可少。
Build Name and Description Setter
当前版本:2.2.0
插件地址:https://plugins.jenkins.io/build-name-setter
作用:该插件将构建的显示名称设置为#1、#2、#3…之外的其他名称,以便您可以使用在上下文中更有意义的标识符。安装此插件时,您的作业配置页面将获得附加设置,允许您为每个新生成指定生成名称。配置完毕后,也可以在Pipeline中使用。除了定义名称外,还可以定义一些描述信息哦。
Job Configuration History
当前版本:1183.v6e2785ff75e0
插件地址:https://plugins.jenkins.io/jobConfigHistory/
作用:该插件保存所有作业和系统配置的副本。我们如果配置完毕后,想撤销以前的配置。那么这个插件就是神器了。
如果你更改了某个配置,但是现在又想更改回去,没有备份而且忘了,那么可以使用这个插件。
它会在面板中创建一个Job Conflg History 菜单。将会显示我们每一次的配置更改。我们可以一键回滚到指定配置
Display Console Output
当前版本:1.0.5
插件地址:https://plugins.jenkins.io/display-console-output/
作用:该插件可以直接在项目页面展现上一个构建的控制台输出界面。这样我们点击构建后,可以很方便的看到构建输出日志了。建议安装。
Monitoring
当前版本:1.91.0
插件地址:https://plugins.jenkins.io/monitoring/
作用:该插件通过JavaMelody监控Jenkins的性能。
Active Choices
当前版本:2.6.4
插件地址:https://plugins.jenkins.io/uno-choice
作用:该插件用于参数化的自由式Jenkins作业,以创建脚本化、动态和交互式作业参数。活动选项参数可以动态更新,并可以呈现为组合框、复选框、单选按钮或丰富的HTML UI小部件。根据所选参数,自动调出对应参数所依赖的后续参数。
通俗解释:在一个项目中,可以根据变量选择,执行不同的构建脚本或者构建过程。提高复用性。
Git parameter
当前版本:0.9.18
插件地址:https://plugins.jenkins.io/git-parameter/
作用:该插件允许您在构建中指定git分支、标记、请求或修订号作为参数。可以让我们基于Git的参数化构建。
这个插件会自动使用Git 和 Git Client插件
Gitee
当前版本:1.2.7
插件地址:https://plugins.jenkins.io/gitee/
作用:该插件允许Gitee在提交代码或打开/更新合并请求时触发Jenkins中的构建。它还可以将构建状态发送回Gitee。和上面的GitLab Plugin插件是一样的。只是针对的平台不一样了而已。
Jira
当前版本:3.8
插件地址:https://plugins.jenkins.io/jira/
作用:该插件允许Jenkins执行错误报点的记录。如果通过JIRA记录Bug列表。那么这个插件值得大家试试。
插件将自动将所有匹配的问题名称超链接到Jira。
3.总结
上面的插件,通过标题都可以在 https://plugins.jenkins.io/ 官方插件市场上查询到。
通过每个插件地址,都可以通过浏览器进行下载.hpi文件(Jenkins 插件的文件格式)。
安装插件有两种方式:
- 通过Jenkins后台的系统管理中的插件管理的Available plugins 进行搜索安装。
- 通过插件管理中的Advanced Setting面板的Deploy Plugin功能,上传hpi文件后点击Deploy按钮进行本地上传安装。
所有介绍到这里就结束了。希望能够解决大家的一部分疑惑。