目录

一、持续集成环境Jenkins安装

1.安装Jenkins需要依赖JDK

2.获取软件包 jenkins

3.修改jenkins配置

4.启动jenkins

5.获取admin密码 

6.添加管理员账户,并进入Jenkins后台

二、持续集成环境Jenkins插件管理

1.修改Jenkins插件下载地址

2.下载中文汉化插件

3.持续集成环境Jenkins用户权限管理

4.持续集成环境Jenkins凭证管理

5.持续集成环境Maven安装和配置

6.持续集成环境Tomcat安装和配置

三、Jenkins构建Maven项目

1.Jenkins构建的项目类型介绍

2.Jenkins项目构建类型自由风格项目

3.Jenkins项目构建类型Maven项目构建

4.Jenkins项目构建类型Pipeline流水线项目构建


一、持续集成环境Jenkins安装

1.安装Jenkins需要依赖JDK

关闭防火墙机制

[root@jekins ~]# systemctl stop firewalld
[root@jekins ~]# systemctl disable firewalld
[root@jekins ~]# setenforce 0

安装路径:/usr/lib/jvm

[root@jekins ~]# yum install java-1.8.0-openjdk* -y
[root@jekins ~]# java -version
openjdk version "1.8.0_322"

2.获取软件包 jenkins

[root@jekins ~]# ls           #上传jekins软件包
jenkins-2.277.4-1.1.noarch.rpm
[root@jekins ~]# rpm -ivh jenkins-2.277.4-1.1.noarch.rpm   #进行安装

3.修改jenkins配置

[root@jekins ~]# vim /etc/sysconfig/jenkins
...
JENKINS_USER="root"               #修改用户为root
JENKINS_PORT="8888"               #修改端口为8888

4.启动jenkins

[root@jekins ~]# systemctl start jenkins       
[root@jekins ~]# netstat -natp | grep 8888
tcp6       0      0 :::8888                 :::*                    LISTEN      70126/java          

浏览器访问服务:192.168.100.129:8888

5.获取admin密码 

进入入门界面,选择插件安装

6.添加管理员账户,并进入Jenkins后台

二、持续集成环境Jenkins插件管理

Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。

1.修改Jenkins插件下载地址

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

Jenkins官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址

[root@jenkins ~]# cd /var/lib/jenkins/
[root@jenkins jenkins]# cd updates/
[root@jenkins updates]# ls
default.json  hudson.tasks.Maven.MavenInstaller
[root@jenkins updates]# sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

再把Manage Plugins点击Advanced,把Update Site改为国内插件下载地址

更改完设置后,重启jenkins

2.下载中文汉化插件

下载插件

重启jenkins

3.持续集成环境Jenkins用户权限管理

可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权,限安装Role-based Authorization Strategy插件

下载完成之后,回到首页

回到首页,查找安装的插件

添加三个角色,点击Manage Roles

baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定基本的Jenkins访问权限

role1:该角色为项目角色。使用正则表达式绑定"apple.*",意思是只能操作apple开头的项目。

role2:该角色也为项目角色。绑定"orange.*",意思是只能操作orange开头的项目。

回到主页,找到Manges Users

创建用户

给用户分配角色

kali用户分别绑定baseRolerole1角色

jack用户分别绑定baseRolerole2角色

设置管理和项目

创建项目测试权限

最后测试结果

4.持续集成环境Jenkins凭证管理

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

安装Credentials Binding插件

安装插件后,Manage Jenkins多了"凭证"菜单,在这里管理所有凭证

安装Git插件和Git工具

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

服务器安装Git工具

[root@jenkins ~]# yum install git -y

第一种用户密码类型 

创建凭证

填写之前的Gitlab的账号和密码

测试凭证是否可用

创建一个FreeStyle项目:新建Item->FreeStyle Project->确定

找到"源码管理"->"Git",在Repository URL复制Gitlab中的项目URL 

保存配置后,点击构建”Build Now“ 开始构建项目

第二种SSH密钥类型

SSH免密登录示意图

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

[root@jenkins ~]# 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 already exists.
Overwrite (y/n)? y
[root@jenkins ~]# cd .ssh/
[root@jenkins .ssh]# cat id_rsa.pub        #查看公钥地址
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA5Ym1riZUEP/wFm7fcVKehIAiVOhHdv3tZdy3eahfQW230iOKmiqADvaVTHJQkvOvDP/pulNKfXisL2to7+xVuU/nyDsrs5WPhYBPi1Hc7TK0Bl6T2EKM9IgqijdFJdx0okeAEScSvACQ9NMwVVtDZvantru8KvA5soGYvPEmCIkA8Ev0W6F6UGC1PfXHbmpZDycwSqfIPvPxvo1O5+3HFyfYbVk141fnBTHjF2WW4J/OGZikk+Aeobt/x5bW7w6oNYZq/QpxI8t9+3vjelIWiWi8AGIfu2MzgODwdIcrxCmB254/dLk3PiYIEoq2Zl8nXRNF47NHnB0JAZm3kpx9 root@jekins

把生成的公钥放在Gitlab

root账户登录gitlab->点击头像->Settings->SSH Keys,复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"

Jenkins中添加凭证,配置私钥

Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来


测试凭证是否可用

新建"test02"项目->源码管理->Git,这次要使用GitlabSSH连接,并且选择SSH凭证

同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!

5.持续集成环境Maven安装和配置

Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。安装Maven

[root@jenkins ~]# tar -xzf apache-maven-3.6.2-bin.tar.gz     #解压
[root@jenkins ~]# mkdir -p /opt/maven                        #创建目录
[root@jenkins ~]# mv apache-maven-3.6.2/* /opt/maven         #移动文件

配置环境变量

[root@jenkins ~]# vim /etc/profile
...
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk     #末尾粘贴三行代码
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
[root@jenkins ~]# source /etc/profile                 #配置生效

全局工具配置关联JDKMaven

Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:

Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:

添加jenkins全局变量

Manage Jenkins->Configure System->Global Properties ,添加三个全局变量

JAVA_HOMEM2_HOMEPATH+EXTRA

修改Maven的settings.xml

[root@jenkins ~]# mkdir /root/repo               #创建本地仓库目录
[root@jenkins ~]# vim /opt/maven/conf/settings.xml
...
<localRepository>/root/repo</localRepository>   #把注释去掉   
...
 <mirror>                                       #添加阿里云私服地址
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
 

测试Maven是否配置成功

使用之前的gitlab密码测试项目,修改配置

构建->增加构建步骤->Execute Shell 

开始构建

构建成功

6.持续集成环境Tomcat安装和配置

关闭防火墙机制

[root@tomcat ~]# systemctl stop firewalld   
[root@tomcat ~]# systemctl disable firewalld
[root@tomcat ~]# setenforce 0

安装Tomcat相关服务

[root@tomcat ~]# yum install java-1.8.0-openjdk* -y          #安装JDK
[root@tomcat ~]# tar -xzf apache-tomcat-8.5.47.tar.gz        #解压软件包
[root@tomcat ~]# mkdir -p /opt/tomcat                        #创建目录
[root@tomcat ~]# mv /root/apache-tomcat-8.5.47/* /opt/tomcat #移动文件
[root@tomcat ~]# /opt/tomcat/bin/startup.sh                  #启动tomcat
[root@tomcat ~]# netstat -natp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      11958/java          

浏览器测试

 配置Tomcat用户角色权限,默认情况下Tomcat是没有配置用户角色权限的 

后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置

[root@tomcat ~]# vim /opt/tomcat/conf/tomcat-users.xml
...
<role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>  #用户和密码都是tomcat
</tomcat-users>      #内容粘贴再里面

为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置默认不许允许远程访问,现在需要注释掉

[root@tomcat ~]# vim /opt/tomcat/webapps/manager/META-INF/context.xml
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->        #注释掉

重启Tomcat,访问测试

[root@tomcat ~]# /opt/tomcat/bin/shutdown.sh     #停止服务
[root@tomcat ~]# /opt/tomcat/bin/startup.sh      #开启启动

再进行测试

三、Jenkins构建Maven项目

1.Jenkins构建的项目类型介绍

Jenkins中自动构建项目的类型有很多,常用的有以下三种:自由风格软件项目、Maven项目、流水线项目

每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度非常高

2.Jenkins项目构建类型自由风格项目

创建项目

配置源码管理,使用ssh方式gitlab拉取代码配置完成后,点击应用并保存。

开始构建Build Now

刚才创建的项目,点击设置进行编译打包

构建->添加构建步骤->Executor Shell设置完成后,点击应用并保存

把项目部署到远程的Tomcat里面,需要安装 Deploy to container插件

构建后操作

点击"Build Now",开始构建过程

浏览器访问

部署成功后,访问项目

演示改动代码后的持续集成,IDEA中源码修改并提交到gitlab

3.Jenkins项目构建类型Maven项目构建

安装Maven Integration插件,重启jenkins

开始创建Maven项目

项目配置

验证是否能成功再IDEA里修改代码,push到远程仓库

gitlab先查看

验证成功后,开始构建

浏览器验证

4.Jenkins项目构建类型Pipeline流水线项目构建

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

Pipeline好处:

代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。

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

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

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

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

如何创建 Jenkins Pipeline

Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy

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

Pipeline 也有两种创建方法:可以直接在 Jenkins Web UI 界面中输入脚本;也可以通过创建一Jenkinsfile 脚本文件放入项目源码库中

安装Pipeline插件

插件安装完成后,会出现相应的模块

#Declarative声明式-Pipeline

流水线->选择HelloWorld模板

stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage。

stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。

steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容,编写一个简单声明式Pipeline

修改上面的代码

pipeline {
    agent any

    stages {
        stage('pull code) {
            steps {
                echo 'pull code'
            }
        }
        stage('build porject') {
            steps {
                echo 'build porject'
            }
        }
        stage('deploy item') {
            steps {
                echo 'deploy item'
            }
        }
    }
}

点击构建,可以看到整个构建过程

#Scripted Pipeline脚本式-Pipeline

继续返回配置,这次选择"Scripted Pipeline"

重新构建项目

编写一个简单的脚本式Pipeline

声明式代码生成

再设置里找到流水线语法

开始构建项目

编译构建代码生成

回到流水线语法界面

重新设置配置文件

再次构建项目

部署代码生成

回到流水线语法

重新修改配置文件

再构建项目

验证构建效果

现在IDEA编写代码,再push到远程

再构建进行验证

浏览器最后查看效果

Pipeline的另一种构建方式Pipeline Script from SCM

刚才我们都是直接在JenkinsUI界面编写Pipeline代码,这样不方便脚本维护,脚本容易丢失,建议把Pipeline脚本放   在项目中(一起进行版本控制)

在项目根目录建立Jenkinsfile文件

然后就可以把当前文件Jenkinsfile的文件提交到gitlab上

重新配置web_demo_pipeline项目

验证效果

Push完成后,开始构建

浏览器验证效果

发现中文的字符没有显示出来变成了乱码

结果验证

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐