作为 CI/CD 的调度中心,Jenkins 具有十八般武艺,目前已有 1700 多个插件,功能强大到似乎有点过分了。本文主要列出平时我们常用的插件。

以下这两个网站是 Jenkins 所有的插件及说明

Jenkins Plugins https://plugins.jenkins.io

Jinkins Plugins Wiki https://wiki.jenkins.io


Configuration

Jenkins CASC: configuration-as-code

将Jenkins的配置以Code的方式进行保存,方便Jenkins的迁移与重建。该插件对于敏捷管理Jenkins服务非常有用。

Parameter

Git Parameter

这是一个参数构建扩展,可以在构建的时候选择git的某一个分支来构建服务。

file-parameters

这个让Jenkinsfile支持将文件作为参数。

Hidden Parameter

参数化构建时,隐藏相关参数。可用于设置默认参数,同时通过API来传递参数。

Extended Choice Parameter

支持更多类型的参数,如单选,多选,多级单选,多级多选类型

Build Name and Description Setter

自定义每个Build名字

1
2
buildName "${GERRIT_CHANGE_SUBJECT}"
buildDescription "Executed @ ${NODE_NAME}"

build user vars

为job注入用户信息环境变量

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
BUILD_USER_GROUPS Jenkins user groups
BUILD_USER_EMAIL Email address

picture 0

Pipeline examples:

1
2
3
4
5
6
7
8
9
10
11
stages {
stage('create user') {
steps{
wrap([$class: 'BuildUser']) {
sh '''
echo $BUILD_USER
'''
}
}
}
}

Environment Injector

在jenkins构建job时,可以自定义添加环境变量。
Environment Injector

HashiCorp Vault

可以帮助Jenkins安全地管理和使用存储在Vault中的敏感信息。从Vault中获取密钥,并将其注入到Jenkins 构建环装中作为环境变量。这样可以安全地使用Vault中存储的敏感信息,而不需要将其直接写入Jenkins job中。

Agent

Docker

利用Docker容器动态创建Jenkins Slave。如果有了Kubernetes/Openshift集群,就不需要这个插件了。直接使用下面的Kubernetes插件。
jenkins非root启动的话,为了运行docker需要执行sudo chmod 777 /var/run/docker.sock

Kubernetes

这个插件可以将Jenkins Slave Node动态配置为Kubernetes集群上的pod。

Openshift

这个插件支持调度Openshift的对象,包括触发 BuildConfig、Deployment、Scale up a Deployment,给ImageStream打新的Tag,以及创建新的对象、删除已有对象等。

swarm

这个插件可以方便地为jenkins master添加slave agent.

Trigger

GitLab

配置Gitlab的相关认证,同时也支持GitLab的Webhook触发。

GitLab Hook

支持GitLab更好的触发。

Gogs WebHook

支持Gogs代码仓库的触发。

Tools

Maven

这个插件为Maven 2 / 3项目提供了高级集成功能。

Pyenv Pipeline

方便对python进行项目级别的环境隔离。
jenkins机器上需要安装python、pip、virtualenv

Python

这个插件支持在Jenkins的构建过程中执行Python脚本。

SonarQube Scanner

支持SonarQube的代码扫描。

Ansible

在构建任务中可以执行Ansible任务。

Publish Over SSH

通过SSH拷贝文件到目标机器,同时可以在目标机器上执行脚本

Publish Over SSH

事先要在设置中添加目标机器的访问方式。

Condition BuildStep

可以使用 when 对 step 做判断

Http Request

向用户发送一个 HTTP / HTTPS 请求

Workspace Cleanup

每次 build 之前删除 workspace 目录下指定的文件

Workspace Cleanup

Pipeline Utility Steps

Pipeline Utility Steps

xvfb

为应用程序提供虚拟的 X server,主要用于界面自动化测试。

Job Manager

Job Generator

定义一个参数化的模板,通过这个模板快速的在 Jenkins 上创建出任务。

Job Generator

Parameterized Remote Trigger

触发远程的Jenkins server的Job

Job DSL Plugin

Jenkins Job DSL Plugin 可以让开发者通过 Groovy 脚本来定义和配置任务,随后插件会通过执行这些脚本来维护 Jenkins 任务。与 Job Generator 相比,它需要了解 Groovy。

Pipeline:Job

添加一个新的 Job 类型:Pipeline。

Pipeline:Job

Multijob

把多个 Job 组织起来。

Parameterized Trigger

这是一个扩展型的插件,使各个 job 连接的时候可以传递一些 job 相关的信息。

Parameterized Scheduler

这个扩展是 Parameterized Trigger 的定时触发版

Join

这也是一个触发 job 的插件,亮点在于它触发 job 的条件是等待所有当前 job 的下游的 job 都完成才会发生。

Build Pipeline

这个插件提供一个构建流水线的视图。同时它提供了一个任务的手动触发器。

Build Pipeline

Testing

JUnit

展示JUnit单元测试报告。

TestNG Results

导出TestNG的测试报告。

JaCoCo

生成测试覆盖率的报告。

Performance

生成性能测试报告
需要在Jenkins机器上安装Taurus(开源负载测试工具和功能测试工具自动化框架)

Performance

Html Publisher

生成报告文档。参考资料:https://www.jianshu.com/p/8fb776f83243

Authorization

Role-based Authorization Strategy 用户角色

给Jenkins用户权限管理添加了角色组。

Matrix Authorization Strategy Plugin

为每个项目设置用户权限

Monitor

Build Monitor View

将 Jenkins 项目以一块看板的形式呈现。

Build Monitor View

Disk Usage

对Jenkins节点服务器磁盘的监控。

Disk Usage

Monitoring 监控

监控 Jenkins 节点的 CPU、系统负载、平均响应时间和内存使用。

Monitoring监控

Prometheus Metrics

将Jenkins 服务及job监控指标统一由Prometheus采集。
a Jenkins performance and health overview for jenkinsci/prometheus-plugin

Alert

Email Extension

扩展了发送告警邮件的控制力度。可以定义邮件触发器、邮件内容、收件人。

Mailer

每次不稳定的构建都发送邮件通知。
单独发送邮件给对构建造成不良影响的责任人,会从 SCM 提交者人的信息中,拼出邮箱。

Sounds

这个插件能让 Jenkins 通过播放声音来发出通知。

Backup And Restore

Backup 备份 Jenkins

自定义备份 Jenkins Home 目录。

Backup备份Jenkins

ThinBackup 轻量备份 Jenkins

轻量备份 Jenkins 上的配置与 Job

ThinBackup轻量备份Jenkins

SCM Sync Configuration

SCM Sync Configuration

备份与恢复secrets

备份

1
2
cd /var/lib/jenkins
tar czvf /tmp/jenkins_secrets.tgz secret* credentials.xml

恢复

1
2
3
4
5
6
7
systemctl stop jenkins
rm /var/lib/jenkins/identity.key.enc
cd /var/lib/jenkins
tar xzvf /tmp/jenkins_secrets.tgz -C ./
chown jenkins:jenkins /var/lib/jenkins/credentials.xml
chown jenkins:jenkins /var/lib/jenkins/secret*
systemctl start jenkins

通过这种方法,新的Jenkins实例将能够正确解密和使用credentials.xml中的加密凭证。这是因为Jenkins使用master.key和hudson.util.Secret文件来加密和解密凭证信息。通过复制这些文件,新的Jenkins实例将拥有相同的加密密钥,从而能够正确读取加密的凭证。

预先要在全局配置中设置代码版本控制库的配置,每次创建或更新 job 配置时都会提示是否同步配置

Job Import Plugin

可方便地从一个Jenkins实例导入job到另一个实例。


参考文章 [jenkins常用插件汇总](http://www.cnblogs.com/honeybee/p/7877875.html) [Jenkins插件大全](https://blog.csdn.net/pansaky/article/details/80755739)