暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Jenkins持续集成环境的搭建与配置

风雪留客 2020-08-31
544

一. 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/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
#刷新环境变量使其生效
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
#安装JDK
yum 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

输入账号密码:

成功~~


文章转载自风雪留客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论