一. Jenkins持续集成流程:

首先,由开发人员将代码上传到源代码服务器
其次,由Jenkins完成对代码的拉取,测试,打包
最后,Jenkins将打包过后的文件分别部署到不同的服务器,供测试或者用户访问.
二. 搭建Jenkins持续集成环境
1. 用户权限管理
我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限
⑴. 安装Role-based Authorization Strategy插件:

⑵. 开启权限全局安全配置
在Jenkins—>Configure Global Security菜单中,修改如下内容:
授权策略切换为”Role-Based Strategy”

⑶. 创建角色
选择管理和分配角色菜单
⑷. 选择管理角色:


Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色):针对某个或者某些项目的角色
Slave roles(节点角色):节点相关的权限,一般用于Jenkins集群节点的权限控制
⑸. 创建角色
让我们来创建一个全局角色和两个项目角色:
baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。
注意:如果不给后续用户绑定这个角色,会报错误:用户名 ismissing the Overall/Read permission
role1:该角色为项目角色。使用正则表达式绑定”Jenkins.“,意思是只能操作Jenkins开头的项目。
role2:该角色也为项目角色。绑定”Jenkins-demo.“,意思是只能操作Jenkins-demo开头的项目。
⑹. 创建用户

我们新建两个用户:
肉丝: rose
杰克:jack
如果不分配角色的话,登陆是没有任何权限的:
⑺. 给用户分配角色
系统管理页面进入Manage and Assign Roles,点击Assign Roles
给rose分配权限:
rose登陆之后是看不到其他东西的,如下图,所以我们需要给rose分配项目权限:
我们来分别给杰克和肉丝分配不同的项目权限,查看效果:
⑻. 测试
新建两个项目:
需要选中Freestyle project,否则确定按钮是灰色的.

登陆不同的角色,查看对应的所能查看的项目:
rose:能看到以Jenkins开头的项目.
jack:杰克只能看到以Jenkins-demo开头的项目
2. Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
⑴. 安装Credentials Binding插件
要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件
安装插件后,菜单中多了”凭证”菜单,在这里管理所有凭证:
⑵. 五种凭证的区别:
可以添加的凭证有5种:
Username with password:用户名和密码
SSH Username with private key:使用SSH用户和密钥
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text:需要保存的一个加密的文本串,如Github的api token
Certificate:通过上传证书文件的方式

⑶. 常见凭证:
常用的凭证类型有:
Username with password(用户密码)
SSH Username with private key(SSH密钥)
3. Jenkins凭证的使用(用户密码类型)
接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。
⑴. 安装Git插件和Git工具
为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。
①. Git插件安装:

②. CentOS7上安装Git工具:
#安装yum install git -y#安装后查看版本git --version
⑵. 创建用户密码类型凭证:
①. 创建凭证
Jenkins->凭证->系统->全局凭证->添加凭证:
②. 配置凭证信息:

③. 查看凭证:

⑶. 测试凭证是否可用
①. 创建一个FreeStyle项目:
新建Item->FreeStyle Project->确定
②. 找到git地址:
找到项目详情,查看git地址:
③. 配置项目:
找到源码管理,选择git,填写信息:
我们发现,报错了,无法连接仓库:
我们接下来添加刚刚的凭证,就不会报错了.

⑷. 构建项目:
保存配置后,点击构建”Build Now“ 开始构建项目:
⑸. 查看控制台输出:
构建完成后点击控制台输出:
我们可以在控制台输出中看到项目的构建情况,如果错误可以看到错误信息,还可以看到构建目录(红框选中部分为我们本次构建地址):
⑹. 进入构建目录查看文件:

4. Jenkins凭证的使用(SSH密钥类型)
⑴. 使用root用户生成公钥和私钥
#生成公钥和私钥ssh-keygen -t rsa
其生成目录在/root/.ssh/

对应的文件类型:
id_rsa:私钥文件
id_rsa.pub:公钥文件
⑵. 把公钥在Gitlab进行配置

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

⑶. 在Jenkins中添加凭证,配置私钥
①. 在Jenkins添加一个新的凭证,类型为”SSH Username with private key”

②. 把私钥文件内容复制到内容区:

③. 创建一个新项目
在源码管理进行配置,凭证类型选择ssh凭证.
④.构建项目,查看控制台输出:

5. Maven安装和配置:
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。
因为下面的步骤较为简单,故不再提供演示图片.
⑴. 下载maven安装包:
下载地址:http://maven.apache.org/download.cgi
⑵. 将下载的安装包上传到服务器
将下载的文件上传到服务器,此处以maven-3.6.3举例:
#解压tar -xzf apache-maven-3.6.3-bin.tar.gz -C /opt/maven/#创建目录mkdir -p /opt/maven#移动文件mv apache-maven-3.6.3/* /opt/maven#配置环境变量vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport MAVEN_HOME=/opt/mavenexport PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin#刷新环境变量使其生效source /etc/profile#查看Maven版本mvn -v
⑶. 或者你可以采用yum在线安装:
下载maven安装包资源:
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
安装maven:
yum -y install apache-maven
查看Maven版本,验证是否安装成功:
mvn -v
⑷. 配置JDK和Maven
Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:
取消自动安装:
选择本地jdk安装目录:
配置maven:
⑷. 添加Jenkins全局变量
在菜单Manage Jenkins->Configure System->Global Properties中 添加三个全局变量:
JAVA_HOME、M2_HOME、PATH+EXTRA

⑷. 修改Maven的settings.xml
#创建本地仓库目录mkdir /root/repository#修改maven中的settings.xml文件,下面路径选择你自己的路径.vi /opt/maven/conf/settings.xml
本地仓库改为:/root/repository

修改远程仓库地址为阿里云:
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></mirror>

⑸. 测试Maven是否配置成功
使用之前的gitlab密码测试项目,修改配置
构建->增加构建步骤->Execute Shell
输入mvn clean package:
应用保存
构建项目—>查看控制台输出:
我们不难看出,从拉取代码,到下载jar包,再到构建项目,一气呵成.
6. Tomcat安装和配置
⑴. 安装Tomcat8.5
#下载tomcat:wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz#安装JDKyum install java-1.8.0-openjdk* -y#解压tar -zxvf apache-tomcat-8.5.57.tar.gz -C /usr/local/#启动:cd /usr/local/apache-tomcat-8.5.47/bin/./startup.sh
访问测试:
⑵. 配置Tomcat用户角色权限
默认情况下Tomcat是没有配置用户角色权限的,此处我们可以验证一下:
可以看到访问被拒绝.
⑶. 添加用户及权限
但是,Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以我们需要修改tomcat以下配置:
vi /usr/local/apache-tomcat-8.5.47/conf/tomcat-users.xml<!--<role rolename="定义角色,每个标签就是一个角色"/><user username="用户名" password="密码" roles="分配角色,添加多个用逗号隔开."/>--><tomcat-users><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="root" password="123456" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/></tomcat-users>
我们配置了一个账户名为root,密码为123456的用户.
重启tomcat,我们发现,依然是403错误.因为默认情况下,这个页面是不允许远程访问的,故我们需要接着配置:
vi /usr/local/apache-tomcat-8.5.47/webapps/manager/META-INF/context.xml<Context antiResourceLocking="false" privileged="true" ><!--注释此内容<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />--><Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/></Context>
重启tomcat
输入账号密码:
成功~~




