首页 > 技术文章 > 2 Jenkins安装和持续集成环境配置

weicunqi 2021-06-07 09:15 原文

2 Jenkins安装和持续集成环境配置

2.1 持续集成流程说明

image-20210517153457256

  • 首先,开发人员每天进行代码提交,提交到Git仓库

  • 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。

  • 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问 应用。

服务器列表

本笔记虚拟机统一采用CentOS 7.9系统。

名称IP地址安装软件
持续基础服务器 192.168.5.3 jenkins,JDK,Maven,Git,SonarQube,Mysql
代码托管服务器 192.168.5.4 gitlab-ce
应用测试服务器 192.168.5.5 JDK1.8,Tomcat8.5

2.2 Gitlab代码托管服务器安装

Gitlab简介

image-20210517153917005

官网: https://about.gitlab.com/

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的 web服务。

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

详细请参考文档:Linux-Gitllab安装

2.3 源码上传到Gitlab仓库

测试代码下载:
wget https://cunqi0105-1300757323.cos.ap-shanghai.myqcloud.com/configuration-file/web_demo.zip

image-20210518161552701

image-20210518161604504

image-20210522142122981

image-20210518161712632

image-20210522142331018

image-20210522142356848

image-20210522142418225

2.4 持续集成环境(1)-Jenkins安装和插件管理

详细请参考文档:Linux-Jenkins安装

2.6 持续集成环境(2)-Jenkins用户权限管理

2.6.1 安装Role-based Authorization Strategy插件

Role-based Authorization Strategy

image-20210518145057483

开启权限全局安全配置

image-20210518145102631

授权策略切换为"Role-Based Strategy",保存

image-20210518145136916

 

2.6.2 创建角色

在系统管理页面进入 Manage and Assign Roles

image-20210518145200630

点击"Manage Roles"

image-20210518145210203

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色 Project roles(项目角色):针对某个或者某些项目的角色 Slave roles(奴隶角色):节点相关的权限

添加以下角色:

  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 ismissing the Overall/Read permission

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

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

image-20210518145350352

保存。

2.6.3 创建用户

在系统管理页面进入 Manage Users

image-20210518145434714

image-20210518145440967

image-20210518145447182

分别创建两个用户:jack和eric

image-20210518145453029

2.6.4 给用户分配角色

系统管理页面进入Manage and Assign Roles,点击Assign Roles

绑定规则如下:

  • eric用户分别绑定baseRole和role1角色

  • jack用户分别绑定baseRole和role2角色

image-20210518145528670

保存。

2.6.5 创建项目测试权限

以itcast管理员账户创建两个项目,分别为itcast01和itheima01

image-20210518145548873

结果为:

  • eric用户登录,只能看到itcast01项目

  • jack用户登录,只能看到itheima01项目

2.7 持续集成环境(3)-Jenkins凭证管理

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

2.7.1 安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

Credentials Binding

image-20210518150112178

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

image-20210518150617398

可以添加的凭证有5种:

image-20210518150202753

  • 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密钥)

2.7.2 安装Git插件和Git工具

接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。

Git插件安装:

image-20210518150324503

登录到服务器上后安装Git工具

yum -y install git

2.7.3 用户密码类型

1)创建凭证

Jenkins->凭证->系统->全局凭证->添加凭证

image-20210518162031377

选择"Username with password",输入Gitlab的用户名和密码,点击"确定"。

image-20210518162152417

2)测试凭证是否可用 创建一个FreeStyle项目:新建Item->FreeStyle Project->确定

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

image-20210518162515148

image-20210518162537452

这时会报错说无法连接仓库!在Credentials选择刚刚添加的凭证就不报错

image-20210518162602717

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

image-20210518162613757

image-20210518162639531

查看/var/lib/jenkins/workspace/目录,发现已经从Gitlab成功拉取了代码到Jenkins中。

image-20210518162734116

2.7.4 SSH密钥类型

image-20210518162856553

1)jenkins服务器使用root用户生成公钥和私钥

ssh-keygen -t rsa

在/root/.ssh/目录保存了公钥和使用

image-20210519141317811

 

id_rsa:私钥文件 id_rsa.pub:公钥文件

2)把生成的公钥放在Gitlab中

以root账户登录->点击头像->Settings->SSH Keys

复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"

image-20210519141612445

image-20210519141712785

3)在Jenkins中添加凭证,配置私钥 在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制

image-20210522143243512

image-20210519141852362

4)测试凭证是否可用 新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证

image-20210519141508982

image-20210519141958467

image-20210519142021247

image-20210519142056526

2.8 持续集成环境(4)-Maven安装和配置

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

2.8.1 安装Maven

详细请参考文档:Linux-Maven环境安装

2.8.2 全局工具配置关联JDK和Maven

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

image-20210519164200178

image-20210519163540749

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

image-20210519163704424

2.8.3 添加Jenkins全局变量

Manage Jenkins->Configure System->Global Properties ,添加三个全局变量 JAVA_HOME、M2_HOME、PATH+EXTRA

image-20210522143400151

2.8.4 修改Maven的settings.xml

# 设置本地仓库
<localRepository>/usr/local/mavem/repo</localRepository>
# 设置远程拉取仓库
<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>central</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

image-20210519165949075

image-20210519165928075

2.8.5 测试Maven是否配置成功

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

image-20210519170032989

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

image-20210519170039435

输入

mvn clean package

再次构建,如果可以把项目打成war包,代表maven环境配置成功

image-20210519170619019

2.9 持续集成环境(5)-Tomcat安装和配置

详细请参考:Linux-Apache-Tomcat环境搭建

 

推荐阅读