插件安装及使用教程

前言

本次使用的是 jenkins-2.314-1.1版本进行演示,​ Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何使用一些常用的插件。

修改Jenkins插件下载源

Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址。

方式一:web页面上进行修改

在插件管理的高级中,修改站点,具体步骤如下:

Jenkins->Manage jenkins(系统管理)->Manage Plugins(插件管理),点击Available(高级)

http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 复制到升级站点的URL,然后点击提交,提交后再点击右下角的立即获取,最后再浏览器输入http://ip:port/restart 重启jenkins。
在这里插入图片描述

方式二:配置文件修改

vim /var/lib/jenkins/hudson.model.UpdateCenter.xml

将xml的url节点的值修改成http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,然后保存退出,再重启Jenkins:systemctl restart jenkins
在这里插入图片描述

插件下载

所有插件下载的操作步骤基本如下所所以:

Created with Raphaël 2.3.0 Manage Jenkins(系统管理) Manage Plugins(插件管理) Available(可选的) 搜索框输入插件(例如:Chines) 选中插件前的多选框 点击下方左边按钮 Install without restart (安装后手动重启)

先进入插件管,然后点击可用插件(Avaliable),在顶部的搜索框输入要安装的插件名称即可。
在这里插入图片描述

1. 中文汉化插件:Chines

中文插件,下载安装后,Jenkins的web页面会将一些地方的英文(例如菜单)变为中文。

2. Jenkins用户权限管理插件:Role-based Authorization Strategy

下载安装后,可以开启权限全局安全配置

2.1 开启权限全局安全配置

操作步骤如下:
在这里插入图片描述

2.2 创建用户

操作步骤如下:
在这里插入图片描述

2.3 给用户分配角色
2.3.1 创建角色

操作步骤如下:
在这里插入图片描述

2.3.2 修改用户的角色

操作步骤如下:
在这里插入图片描述

3. 凭证管理插件:Credentials Binding

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便jenkins可以和这些第三方的应用进行交互。

3.1 安装

搜索插件 Credentials Binding 后安装
在这里插入图片描述

3.2 管理凭证

安装插件后,系统管理多了"凭据配置"菜单,在这里管理所有凭证,可以添加5种类型凭证。

  • username with password:用户名和密码
  • SSH Username with private key:使用SSH用户和密钥
  • Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token(token字符串)
  • Certificate:通过上传证书文件的方式

常用的凭证类型有:username with password 和 SSH Username with private key

操作步骤如下:
在这里插入图片描述

这里需要注意下,要包括Jenkins 凭据提供者,不然后面配置会告诉没权限。
在这里插入图片描述

3.2.1 username with password 类型凭证

操作步骤如下:
在这里插入图片描述

3.2.2 SSH Username with private key 类型凭证

ssh-keygen 创建公钥和私钥

  1. 使用root用户生成公钥和私钥

    ssh-keygen -t rsa
    

    此过程是在Jenkins服务器进行处理的(不知道可不可以Gitlib上生成,后面有空进行验证)中间使用回车继续执行(默认值)。

    /root/.ssh/目录保存了公钥和使用(id_rsa:私钥文件;id_rsa.pub:公钥文件)

    [root@localhost ~]# ll /root/.ssh/
    总用量 8
    -rw-------. 1 root root 1675 105 10:22 id_rsa
    -rw-r--r--. 1 root root  408 105 10:22 id_rsa.pub
    
  2. 把生成的公钥放在Gitlab中

    [root@localhost ~]# cat /root/.ssh/id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUaKImdZEaD0uioedmBg2I3CWXNmV5YtoDWF3d6OYEeLKRsDi+cA0IUjJgWGwmlr7NeInIIPDtkQf2OFxozXtg6e0WT/EW2kHuerzvSLZmsCUMdRuxhCIxTSBGdqVtcC9HEiBKbgJ7GR0QX64A1TCVDTSVSZ/iIOCeEo4kCpOqbVS5U5JzDqJZNcrRPCYzKtbsa0GLRa/kk1lJVTJYJyylapxXp66h/s7Vh5xJHabhUEXTnmsvRGpyirPE8+gc7f5/v86wemvOpyi3Iy132LLowFMEdhs31Sx4bhSJ3++OJzwMPw5q7iEKatIbmeKMpMfM6jLdkFrHEIT3NTkf8CWV root@localhost.localdomain
    
    

Gitlab 配置公钥
在这里插入图片描述

jenkins配置私钥

Created with Raphaël 2.3.0 在仪表盘点击 Manage Jenkins 菜单 点击Security 组下的 Manage Credentials(凭据) 点击Stores scoped to xxx 下的全局 点击右侧的新增凭据 选中 SSH Username with private key 类型的凭证后,输入用户名密码 点击页面底部的保存按钮

SSH免密登录示意图
在这里插入图片描述

  1. 配置凭据

在这里插入图片描述

4. Git插件:Git

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。

$ git --version
git version 1.8.3.1

在这里插入图片描述

安装Jenkins服务器中安装 Git应用
yum install git -y
git --version

4.1 创建Git用户凭证

操作步骤如下:

在这里插入图片描述

4.2 创建项目测试git

需要在自己创建一个正确的凭据,用户名和密码都是Gitlab正确的账户和密码

操作步骤如下:
在这里插入图片描述

5. Maven插件:Maven Integration

创建Maven项目的任务,需要在jenkins中配置java环境,该插件创建的任务会自动执行maven的mvn install命令,所以我们只需要在Post Steps中配置打完包之后的操作即可。

6. 流水线插件:Pipeline

6.1 Pipeline简介
6.1.1 概念

​Pipeline,简单来说,就是一套运行在Jenkins上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

6.1.2 使用Pipeline有以下好处(来自翻译自官方文档)∶
  • 代码: Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。

  • 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。

  • 可停止: Pipeline可接收交互式输入,以确定是否继续执行Pipeline。

  • 多功能: Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。

  • 可扩展: Pipeline插件支持其DSL的自定义扩展,以及与其他插件集成的多个选项。

6.2 如何创建Jenkins Pipeline呢?
  • Pipeline脚本是由Groovy语言实现的,但是我们没必要单独去学习Groovy

  • Pipeline支持两种语法:Declarative(声明式)和Scripted Pipeline(脚本式)语法

  • Pipeline也有两种创建方法:可以直接在Jenkins的Web UI界面中输入脚本;也可以通过创建一个Jenkinsfile脚本文件放入项目源码库中(一般我们都推荐在Jenkins 中直接从源代码控制(SCM)中直接载入Jenkinsfile Pipeline这种方法)。

安装插件后,创建项目的时候多了“流水线"类型

6.3 Pipeline语法快速入门
6.3.1 Declarative声明式-Pipeline创建项目

操作步骤如下:
在这里插入图片描述

6.3.2 编写 Pipeline script(流水线脚本)

示例 拉取代码

示例 代码生成器

使用代码生成器生成,将生成的代码,复制到具体Declarative(声明式)脚本 steps 下
在这里插入图片描述

pipeline {
    agent any

    stages {
        stage('拉取源代码') {
            steps {
               checkout([$class: 'GitSCM', branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: '0e1d1fd3-c644-4024-a3c4-a739487dd825', url: 'http://192.168.31.128:82/demo/standalone-maven.git']]])
            }
        }
        stage('构建代码') {
            steps {
                echo '开始构建代码'
            }
        }
      
    }
}

6.3.3 Pipeline Script from SCM (声明式)
刚才我们都是直接在Jenkins的UI 界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放在项目中(一起进行版本控制)

1)在项目根目录建立Jenkinsfile文件,把内容复制到该文件中
在这里插入图片描述

7. 远程部署插件:Deploy to container

就我知道的使用场景:

  1. 打包项目成war包
  2. 然后使用该插件将war包推送到远程tomcat
  3. 使用远程tomcat的管理界面进行应用管理

示例:

  1. 新建一个maven webapp项目(maven-archetype-webapp)
  2. 将项目推送到Gitlab
  3. 配置tomcat管理界面及其用户密码
  4. 配置任务:增加一个 构建后的操作,选择Deploy artifacts to Maven repository
    需要选择war包位置,配置上下文值,配置tomcat容器即可,凭据使用 tomcat配置的用户和密码
    在这里插入图片描述

8. 自动触发构建插件:Gitlab Hook 和 GitLab

就是利用Gitlab的webhook实现代码push到仓库,立即触发项目自动构建。
在这里插入图片描述
在这里插入图片描述

8.1 快速使用

在这里插入图片描述
之后,我们只需要将修改后的代码push到gitlab即可,稍等一会,jenkins就会自动进行构建任务。

8.2 优化使用 开启双向认证

上面我们是将Jenkins中的Gitlab的身份验证关闭了,作为有点强迫症的我来说,我就是想要它打开身份认证,所以我们需要进行下面的配置。

8.2.1 在Jenkins中开启Gitlab身份认证

在这里插入图片描述

8.2.2 在Gitlab中开启Jenkins 认证

在这里插入图片描述

9. Email Extension插件

插件使用场景:任务构建失败时,将失败信息通知到指定的邮箱。

配置插件基础信息

先下载好插件后,需要配置发件人信息,我这里使用的是个人邮箱,如果工作需要的话可以配置一个丁丁机器人或企业微信机器人等。
在这里插入图片描述

测试插件使用

这里我就创建了一个自由风格的项目,然后再构建中新增一个错误的命令,然后在 构建后操作 增加构建后操作步骤,选中 E-mail Notification
在这里插入图片描述

10. SonarQube Scanner 插件

11. Publish Over SSH插件

下载好插件

11.1 配置远程服务

在全局配置里面可以进项新增ssh server
在这里插入图片描述

Passphrase:如果私钥设置了密码就是私钥的密码,私钥没设置密码可以不填
Path to key:私钥的位置
Key:私钥的内容。如果此处填入了值,则以此处的值为准,会忽略掉Path to key的配置

11.2 使用用户名密码方式

操作步骤:

11.3 使用公钥

1. Jenkins服务器中生成SSH Key

# 创建公钥私钥
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): # 生成私钥的位置配置,默认值是/root/.ssh/id_rsa
Enter passphrase (empty for no passphrase):  # 私钥配置密码,可以不配置使用时不输入密码即可
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa. # 私钥文件位置
Your public key has been saved in /root/.ssh/id_rsa.pub. # 公钥文件位置
The key fingerprint is:
SHA256:vtWdCEZN49BF5g7HgkHhG9+n6JpcUOGkzSa8FXIT5xQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|         .*oX+E. |
|         o /.%   |
|          O % =  |
|         . X *   |
|        S * . o .|
|       . . + + + |
|        . . = +  |
|         + +     |
|        . +..    |
+----[SHA256]-----+

[root@localhost ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUaKImdZEaD0uioedmBg2I3CWXNmV5YtoDWF3d6OYEeLKRsDi+cA0IUjJgWGwmlr7NeInIIPDtkQf2OFxozXtg6e0WT/EW2kHuerzvSLZmsCUMdRuxhCIxTSBGdqVtcC9HEiBKbgJ7GR0QX64A1TCVDTSVSZ/iIOCeEo4kCpOqbVS5U5JzDqJZNcrRPCYzKtbsa0GLRa/kk1lJVTJYJyylapxXp66h/s7Vh5xJHabhUEXTnmsvRGpyirPE8+gc7f5/v86wemvOpyi3Iy132LLowFMEdhs31Sx4bhSJ3++OJzwMPw5q7iEKatIbmeKMpMfM6jLdkFrHEIT3NTkf8CWV root@localhost.localdomain

2. 远程服务器中创建指定文件

# 将Jenkins服务器生成的公钥文件内容,复制到该文件中
[root@localhost ~]# vim /root/.ssh/authorized_keys 
[root@localhost .ssh]# cat /root/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUaKImdZEaD0uioedmBg2I3CWXNmV5YtoDWF3d6OYEeLKRsDi+cA0IUjJgWGwmlr7NeInIIPDtkQf2OFxozXtg6e0WT/EW2kHuerzvSLZmsCUMdRuxhCIxTSBGdqVtcC9HEiBKbgJ7GR0QX64A1TCVDTSVSZ/iIOCeEo4kCpOqbVS5U5JzDqJZNcrRPCYzKtbsa0GLRa/kk1lJVTJYJyylapxXp66h/s7Vh5xJHabhUEXTnmsvRGpyirPE8+gc7f5/v86wemvOpyi3Iy132LLowFMEdhs31Sx4bhSJ3++OJzwMPw5q7iEKatIbmeKMpMfM6jLdkFrHEIT3NTkf8CWV root@localhost.localdomain

在这里插入图片描述

11.4 案例:任务中使用

在这里插入图片描述

12. Extended Choice Parameter 插件

扩展参数,让我们可以让任务配置多个参数,这样可以更能扩展(动态)的构建任务。然后再使用时,只需要将其参数名当作环境变量使用即可

Extended Choice Parameter

注意:

  1. 通常我会创建 Basic Parameter Types 类型的参数,它下面可以选择创建单选,多选(需要使用ctrl 按键)
  2. Number of Visible Items 定义变量的个数(必须正确)
  3. Delimiter 使用什么进行分割参数(这里我使用的英文,
  4. Choose Source for Value 选择参数变量的值来源,有字符串value,属性文件,guava脚本,guava脚本文件,这里我使用的value
  5. 将所有变量都写好,使用Delimiter定义的分隔符进行分割。如:dev,test,prod
  6. Choose Source for Default Value 选择默认值定义
  7. Choose Source for Value Description 给参数添加描述,这样页面上显示描述信息,也是以Delimiter进行分割
使用

可以看到,我们将branch参数当作linux的环境变量即可取到值。
在这里插入图片描述

配置

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目,并将maven配置到path上。

这里我之前已经安装过了maven,所以就不再安装了

全局工具配置 JDK、Maven、Git

Created with Raphaël 2.3.0 在仪表盘点击 Manage Jenkins 菜单 点击 系统配置 组下的 Global Tool Configuration(全局工具配置) 新增jdk(如果已经安装过后,只需要配置 JAVA_HOME即可) 点击页面底部的保存按钮

在这里插入图片描述
在这里插入图片描述

添加Jenkins全局环境变量

Created with Raphaël 2.3.0 在仪表盘点击 Manage Jenkins 菜单 点击 系统配置 组下的 Configure System(系统配置) 在全局属性中环境变量中新增环境变量 点击页面底部的保存按钮

这里新增了三个环境变量,值得注意的是:PATH环境变量必须要

在这里插入图片描述
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐