Jenkins安装及持续集成环境配置
1 持续集成说明 ● 首先,开发者每天向Git仓库提交代码。 ● Jenkins作为持续集成工具,使用Git工具将代码从Git仓库拉取到持续集成服务器,再配合JDK、Maven等软件完成代码的编译、测试、审核、打包。如果这个过程的每一步都有错误,整个过程会重新执行。 ● 最后,Jenkins 将生成的jar 包分发到测试服务器或生产服务器,测试人员或用户可以访问应用程序。 2服务器列表 ● Cen
1 持续集成说明
● 首先,开发者每天向Git仓库提交代码。
● Jenkins作为持续集成工具,使用Git工具将代码从Git仓库拉取到持续集成服务器,再配合JDK、Maven等软件完成代码的编译、测试、审核、打包。如果这个过程的每一步都有错误,整个过程会重新执行。
● 最后,Jenkins 将生成的jar 包分发到测试服务器或生产服务器,测试人员或用户可以访问应用程序。
2服务器列表
● CentOS7 在虚拟机中统一使用。
姓名
IP地址
安装的软件
代码托管服务器
192.168.18.100
Gitlab-12.4.2
持续集成服务器
192.168.18.101
Jenkins-2.263,JDK11,Maven3.6.3,Git,SonarQube
应用测试服务器
192.168.18.102
JDK11
3 JDK安装
3.1 前提说明
● 服务器的IP 地址为192.168.18.101 和192.168.18.102,需要安装JDK。
3.2 卸载默认JDK
● 查询系统安装的JDK:
yum 列表安装 | grep -i java
卸载默认 JDK:
# xxx 表示安装的yum 列表返回的内容 | grep -i java 命令。只需要卸载其他版本的JDK
百胜删除 xxx
3.3安装JDK11
安装JDK11:
yum -y 安装 java-11-openjdk-devel
4 安装gitlab代码托管服务器
4.1 gitlab介绍
官方网站。
Gitlab 是一个仓库管理系统的开源项目。它使用 Git 作为代码管理工具,并在此基础上构建 Web 服务。
Gitlab 和 GitHub 一样,是基于 Git 开发的第三方产品。它是免费和开源的(基于 MIT 协议)。与GitHub类似,gitlab可以注册用户、任意提交自己的代码、添加SSH密钥等,不同的是gitlab可以部署到自己的服务器上。数据库等所有信息都掌握在自己手中,适合团队内部协同开发。也就是说,gitlab 可以算是个人版的 GitHub。
4.2 前提说明
服务器的 IP 地址是 192.168.18.100。
4.3 安装gitlab
安装相关依赖:
yum -y 安装 policycoreutils openssh-server openssh-clients postfix
● 启动 ssh 服务并将其设置为自动启动:
systemctl 启用 sshd && systemctl 启动 sshd
● 设置后“X”自动启动并启动。 post"x 支持gitlab发送功能:
systemctl enable postfix && systemctl start postfix
● 关闭防火墙(测试时可以这样做,生产环境不推荐):
systemctl 停止防火墙
systemctl 禁用防火墙
● 下载Gitlab包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
● 修改Gitlab配置:
vim /etc/gitlab/gitlab.rb
# 修改Gitlab访问地址和端口。默认是80,我们改成82
外部_url 'http://192.168.18.100:82'
nginx['listen_port'] u003d 82
● 重新加载配置并重启Gitlab(耐心等待一段时间):
sudo gitlab-ctl 重新配置
sudo gitlab-ctl 重启
● 启动和自启动:
systemctl 启用 gitlab-runsvdir.service
● 启动成功后访问http://192.168.18.100:82,管理员root密码见下页。修改密码后,再次登录。
4.4 Gitlab创建组、用户和项目
4.4.1 创建组
● 使用管理员root 创建组。一个组中可以有多个项目。您可以将开发添加到组以设置权限。不同的群体是公司不同的开发项目或服务模块。将不同的开发添加到不同的组,可以实现对开发设置权限的管理。
! zoz100078](https://programming.vip/images/doc/7a8f811618ebdd668c6a5113a6744b00.jpg)
4.4.2 创建用户
● 创建用户时,可以选择Regular(普通用户:只能访问自己的组和项目)或Admin(可以访问所有的组和项目)。
● 创建用户后,立即修改密码:
这里的用户名和密码需要记住,用于以后的jenkins登录和拉码。
4.4.3 添加用户到组
! swz 100102 swz 100103 swz 100101
Gitlab 用户在组中有五种不同的权限。
● Guest:可以创建问题和评论,但不能读写版本库。
● Reporter:克隆代码可以使用,不能提交。例如,QA 和 PM 可以授予此权限。
● 开发者:可以克隆代码、开发、提交和推送。例如,可以将此权限授予普通开发。
● 维护者:可以创建项目、添加标签、保护分支、添加项目成员和编辑项目。例如,核心开发可以被授予此权限。
● Owner:可以设置项目访问权限、删除项目、迁移项目、管理团队成员。例如,开发团队负责人可以授予此权限。
! swz 100105 swz 100106 swz 100104
! swz 100108 swz 100109 swz 100107
4.4.4 向用户组添加项目
● 可以使用root管理员在用户组中添加项目,也可以使用刚刚创建的账号登录Gitlab添加项目(需要重设密码,省略)。
5 上传源码到Gitlab仓库
5.1 前提说明
我使用的IDEA是2020.3版本,用于Windows系统的代码开发。
5.2工程代码
以 Spring Boot 项目为例。
pom.xml
<?xml 版本u003d"1.0" 编码u003d"UTF-8"?>
<project xmlnsu003d"http://maven.apache.org/POM/4.0.0" xmlns:xsiu003d"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocationu003d"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<父>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<relativePath/> <!-- 从存储库中查找父级 -->
</父>
<groupId>com.example</groupId>
<artifactId>springboot2</artifactId>
<版本>1.0</版本>
<名称>springboot2</名称>
<description>Spring Boot 演示项目</description>
<属性>
<java.version>11</java.version>
</属性>
<依赖项>
<依赖>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</依赖>
<依赖>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<范围>测试</范围>
<排除>
<排除>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</排除>
</排除>
</依赖>
</依赖>
<构建>
<插件>
<插件>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</插件>
</插件>
</构建>
</项目>
启动类:
包 com.example.springboot2;
导入 org.springframework.boot.SpringApplication;
导入 org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
公共类 SpringbootApplication {
公共静态无效主(字符串[] args){
SpringApplication.run(Springboot2Application.class, args);
}
}
商务课程:
包 com.example.springboot2.web;
导入 org.springframework.web.bind.annotation.RequestMapping;
导入 org.springframework.web.bind.annotation.RestController;
/**
* @author X UD A线
* @版本 1.0
* @since 2021-01-12 09:18
*/
@RestController
公共类 HelloController {
@RequestMapping(值 u003d "/hello")
公共字符串你好(){
返回“你好”;
}
}
5.3 项目结构如下:
5.4 提交代码到Gitlab仓库
首先添加,提交,然后推送。
! swz 100129 swz 100130 swz 100128
! zwz 100132 zwz 100133 zwz 100131
6 Jenkins安装
6.1 前提说明
● 服务器的IP 地址为192.168.18.101。
● 防火墙已关闭。
systemctl 停止防火墙
systemctl 禁用防火墙
6.2 安装JDK
● 略(上面已经安装了)。
6.3 下载詹金斯
wget http://mirrors.jenkins-ci.org/redhat/jenkins-2.263-1.1.noarch.rpm
6.4 安装Jenkins
安装詹金斯:
rpm -ivh jenkins-2.263-1.1.noarch.rpm
6.5 修改Jenkins配置
● 修改Jenkins配置:
vim /etc/sysconfig/jenkins
詹金斯_USERu003d"根"
詹金斯_PORTu003d"8888"
6.6 启动詹金斯
● 启动詹金斯:
systemctl 启动詹金斯
● 启动和自启动:
systemctl 启用詹金斯
6.7 打开浏览器访问
● http://192.168.18.101:8888。
! zwz 100135 zwz 100136 zwz 100134
6.8 获取和输入密码
● 获取并输入密码:
猫 /var/lib/jenkins/secrets/initialAdminPassword
! zwz 100138 zwz 100139 zwz 100137
! swz 100141 swz 100142 swz 100140
6.9跳过插件安装
● 因为Jenkins插件默认需要从官网下载,速度很慢,经常会失败,所以可以暂时跳过插件安装。
! swz 100144 swz 100145 swz 100143
! swz 100147 swz 100148 swz 100146
6.10 添加管理员账号并进入Jenkins后台
! zwz 100150 zwz 100151 zwz 100149
! swz 100153 swz 100154 swz 100152
! swz 100156 swz 100157 swz 100155
! swz 100159 swz 100160 swz 100158
7 Jenkins插件管理
7.1 通用
● Jenkins 本身并没有提供很多功能。我们可以通过使用插件来满足我们的需求。比如从Gitlab拉代码、使用Maven建项目等功能都需要通过插件来完成。
7.2 修改Jenkins插件下载地址
● Jenkins国外官方插件地址下载速度很慢,需要手动修改为国内插件地址。
● Jenkins –> 管理Jenkins –> 管理插件,点击可用。
! zwz 100162 zwz 100163 zwz 100161
这样做的目的是在本地下载Jenkins的官方插件列表。
● 修改地址文件,替换为国产插件地址:
cd /var/lib/jenkins/更新
sed -i 's#http://updates.jekins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i '#/http://www.google.com#https://www.baidu.com#g' default.json
● 点击管理插件中的高级,将更新站点更改为国产插件的下载地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
! swz 100171 swz 100172 swz 100170
● 点击提交,在浏览器中输入 http://192.168.18.101:8888/restart ,重启Jenkins。
7.3 下载中文插件
● Jenkins -> 管理Jenkins -> 管理插件,点击可用,搜索“中文”。
! swz 100174 swz 100175 swz 100173
! swz 100177 swz 100178 swz 100176
● 重启 Jenkins 后,您会看到 Jenkins 已经汉化(但是,某些菜单汉化可能会失败)。
! swz 100180 swz 100181 swz 100179
8 Jenkins用户权限管理
8.1 通用
● Jenkins 的授权管理非常粗糙。我们可以使用“基于角色的授权策略”插件来管理Jenkins的用户权限。
8.2 安装基于角色的授权策略插件
8.3 启用全局安全策略
● 启用全局安全策略:
! swz 100186 swz 100187 swz 100185
● 将授权策略切换为“基于角色的策略”并保存。
8.4 创建角色
● 管理 Jenkins–>管理和分配角色:
点击“管理角色”:
● 全局角色:全局角色。管理员和其他高级用户可以创建基于全局的角色。
● 项目角色:项目角色,一个或一些项目的角色。
● 节点角色:节点角色,节点相关权限的角色。
● 添加以下三个角色:
- ○
baseRole:这个角色是一个全局角色。该角色需要绑定Overall 下的Read 权限,才能将最基本的Jenkins 访问权限绑定到所有用户。注意:如果该角色不绑定后续用户,会报错:用户名
缺少整体/读取权限。
-
○角色1:这个角色是一个项目角色。用正则表达式绑定“spring.*”意味着你只能操作以spring开头的项目。
-
○role2:这个角色是一个项目角色。用正则表达式绑定“springboot.*”,即只能对以springboot开头的项目进行操作。
8.5 创建用户
● 管理 Jenkins -> 管理用户 -> 新用户:
创建两个用户:jack 和 eric:
8.6 给用户分配权限
● 管理Jenkins–>管理和分配角色–>分配角色:
● 绑定规则如下:
-
○jack用户分别绑定baseRole和role2角色。
-
○ eric用户分别绑定baseRole和role1角色。
9. Jenkins 凭证管理
9.1 通用
● 凭证可用于存储需要密文保护的数据库密码、GitHub密码信息、Docker私有仓库密码等,以便Jenkins与这些第三方应用进行交互。
9.2 安装Credentials Binding插件
● 要使用Jenkins 中的凭证管理功能,需要安装Credentials Binding 插件。
● 安装插件后,新增“管理凭证”菜单,可在此处管理所有凭证信息:
可以添加的优惠券有五种:
● 用户名和密码:用户名和密码。
● SSH Username with private key:使用 SSH 用户和密钥。
● 机密文件:需要保密的文本文件。使用时,Jenkins 会将文件复制到一个临时目录,然后将文件路径设置为一个变量。构建完成后,复制的Secret文件将被删除。
● 密文:需要保密的密文字符串,如钉钉或GitHub 的api token。
● 证书:通过上传证书文件。
常见的凭证类型是带密码的用户名和带私钥的 SSH 用户名。
9.3 安装Git插件和Git工具
● 为了让Jenkins 支持从Gitlab 拉取源代码,您需要在CentOS7 上安装Git 插件和Git 工具。
● 安装Git插件:
● 在 CentOS7 上安装 Git:
百胜安装-y git
混帐--版本
9.4 用户密码类型
9.4.1 创建凭证
● Jenkins –> 凭证 –> 系统 –> 全局凭证 –> 添加凭证:
这里的用户名和密码不是随便填的,而是在gitlab上创建的用户zhangsan。
9.4.2 是可用的测试凭证
● 创建免费项目:
● 找到“源代码管理”->“Git”,将Gitlab中的项目URL复制到Repository URL中:
● 此时会报错,因为没有选中刚刚添加的凭证,所以无法连接仓库。
● 点击“Build Now”开始构建项目:
查看/var/lib/jenkins/workspace/目录,发现代码已经成功从Gitlab拉取到Jenkins。
9.5 SSH密钥类型
9.5.1 SSH登录免图
9.5.2 使用root用户生成公私钥
● 使用root用户生成公钥和私钥(在gitlabel服务器上执行):
ssh-keygen -t rsa
默认生成的公私钥在/root/.ssh目录下,其中id_rsa为私钥文件,id_rsa.pub为公钥文件:
ll /root/.ssh
9.5.3 将生成的公钥放入Gitlab
● 以root 帐号登录-> 点击头像-> 设置-> SSH 密钥。
● 复制刚才生成的id_对于rsa.pub文件的内容,点击“Add Key”:
9.5.4 在Jenkins中添加凭证和配置私钥
● 在Jenkins 中添加类型为“SSH 用户名和私钥”的证书,并复制刚刚生成的私钥文件的内容。
9.5.5是可用的测试券
●新建“test02”项目->源代码管理->GIT。在这里,使用 Gitlab 的 SSH 连接并选择 SSH 凭据:
● 也尝试构建项目。如果能正常拉码,说明凭证配置成功。
10 Maven安装配置
10.1 前提说明
服务器的 IP 地址是 192.168.18.101。
防火墙已关闭。
10.2 Maven下载安装配置
下载 Maven:
wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
解压 Maven:
解压 -d /usr/local apache-maven-3.6.3-bin.zip
配置环境变量:
vim /etc/配置文件
# 添加到文件末尾
导出 JAVA_HOMEu003d/usr/lib/jvm/java-11-openjdk-11.0.9.11-2.el7_9.x86_64
导出 MAVEN_HOMEu003d/usr/local/apache-maven-3.6.3
导出 PATHu003d$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
源 /etc/profile
查看安装是否成功:
mvn -v
修改Maven本地仓库,配置阿里云镜像:
cd /usr/local/apache-maven-3.6.3
mkdir 存储库
vim 配置/settings.xml
<!-- 修改内容-->
<localRepository>/usr/local/apache-maven-3.6.3/repository</localRepository>
<镜子>
<!-- 修改内容-->
<镜像>
<id>阿里云maven</id>
<mirrorOf>*</mirrorOf>
<name>阿里巴巴云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</镜像>
</镜子>
10.3 全局工具关联JDK和Maven
● Jenkins -> 管理Jenkins -> 全局工具配置 -> JDK -> 添加JDK:
! zwz 100300 zwz 100301 zwz 100299
JDK11
/usr/lib/jvm/java-11-openjdk-11.0.9.11-2.el7_9.x86_64
● Jenkins -> 管理 Jenkins -> 全局工具配置 -> Maven -> 添加 Maven:
! zwz 100309 zwz 100310 zwz 100308
apache-maven-3.6.3
/usr/local/apache-maven-3.6.3
10.4 添加Jenkins全局变量
● Jenkins –> 管理Jenkins –> 配置系统–> 全局属性,添加三个全局变量:JAVA_HOME,M2_HOME 和PATH+EXTRA。
JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.9.11-2.el7_9.x86_64
M2_HOME
/usr/local/apache-maven-3.6.3
路径+额外
$M2_HOME/bin
10.5 测试Maven是否配置成功
● 使用之前的gitlab密码测试项修改配置:
● build -> 添加构建步骤 -> 执行shell。
输入以下构建命令:
mvn 全新安装
● 重新构建。如果将项目做成jar包,则说明Maven环境配置成功。
更多推荐
所有评论(0)