:-: 服务器列表(虚拟机统一采用CentOS7)
|名称 |主机名 |安装的软件|
|----|----|----|
|代码托管服务器| gitlab-master |gitlab-ce-14.6.0-ce.0.el7.x86_64.rpm|
|<mark>持续集成服务器</mark>| jenkins-master |Jenkins-2.190.3、JDK1.8、Maven3.6.2、Git、SonarQube|
|应用测试服务器| tomcat-master |JDK1.8、Tomcat8.5|
<br/>
[TOC]
# 1. 安装JDK8
Jenkins需要依赖JDK,所以先安装JDK1.8。
```shell
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/install/
# /opt/install/jdk1.8.0_171/bin/java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
```
<br/>
# 2. 安装Jenkins
**1. 下载并安装jenkins**
Jenkins下载地址1(官网):https://jenkins.io/zh/download/
Jenkins下载地址2:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/
```shell
yum -y install epel-release
yum -y install daemonize
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.319.1-1.1.noarch.rpm
rpm -ivh jenkins-2.319.1-1.1.noarch.rpm
```
**2. 修改Jenkins配置**
```shell
vim /etc/sysconfig/jenkins
# jdk目录
JENKINS_JAVA_CMD=/opt/install/jdk1.8.0_171/bin/java
#jenkins用户
JENKINS_USER="root"
#jenkins端口
JENKINS_PORT="8888"
```
**3. 启动Jenkins**
```shell
# systemctl start jenkins
# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Thu 2022-01-06 16:33:56 CST; 31s ago
```
**4. 开放8888端口**
```shell
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
```
**5. 访问Jenkins:http://192.168.1.25:8888/**
**6. 获取并输入admin账户密码**
```shell
# cat /var/lib/jenkins/secrets/initialAdminPassword
d59cfa55bd8f4e39ac91ef1aa26effa3
```
**7. 跳过插件安装**
因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经常会失败,所以我们暂时先跳过插件安装。
:-: ![](https://img.kancloud.cn/a1/3d/a13dfebc3ea1de5f528b4b1cf3931884_1253x306.jpg)
![](https://img.kancloud.cn/a9/d4/a9d4d1e5fdf0448230dda78311329ba1_620x417.jpg)
**8. 添加第一个管理员账号**
![](https://img.kancloud.cn/39/33/3933d1a02026a9ba1448958f36e4a9e9_1232x403.jpg)
**9. Jenkins准备就绪了**
![](https://img.kancloud.cn/54/2e/542e54d0ce2135379a2f3dd3ff8a561a_1260x359.jpg)
<br/>
# 3. Jenkins插件管理
Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。
****
jenkins插件默认下载地址:https://updates.jenkins-ci.org/download/plugins
jenkins插件默认存储目录:`/var/lib/jenkins/plugins`
<br/>
**1. 修改插件下载地址为国内**
Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址。
(1)Jenkins -> Manage Jenkins -> Manage Plugins -> Available。
(2)修改地址文件,替换为国内插件地址。
```shell
cd /var/lib/jenkins/updates
sed -i 's/http:\/\/updates.jenkinsci.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
```
(3)点击Advanced,把Update Site改为国内插件下载地址。
![](https://img.kancloud.cn/90/3c/903cbbbe7d65188b74922a537ec839d3_1160x178.jpg)
```
默认地址:https://updates.jenkins.io/update-center.json
国内插件下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
```
(4)Sumbit后,浏览器访问 http://192.168.1.25:8888/restart 重启Jenkins。
**2. 下载中文汉化插件**
(1)Jenkins -> Manage Jenkins -> Manage Plugins -> Available,搜索`Chinese`。
![](https://img.kancloud.cn/78/18/78180e48f0c840321c1eb9033708d55c_1507x371.jpg)
![](https://img.kancloud.cn/98/74/987478d5586215e940b8640cae51ebf4_1470x301.jpg)
(2)重启后就看到Jenkins汉化了!(PS:但可能部分菜单汉化会失败)。
![](https://img.kancloud.cn/10/7b/107b939e7b20e3179a219b4e21b5d5a9_1400x367.jpg)
<br/>
# 4. Jenkins用户权限管理
我们可以利用 Role-based Authorization Strategy 插件来管理Jenkins用户权限。
<br/>
**1. 安装 Role-based Authorization Strategy 插件**
**2. 开启权限全局安全配置**
系统管理(Manage Jenkins) -> 全局安全配置(Configure Global Security)-> 授权策略 -> 选【Role-Based Strategy】-> 应用。
**3. 创建角色**
(1)系统管理(Manage Jenkins) -> Manage and Assign Roles -> Manage Roles。
(2)添加角色。
![](https://img.kancloud.cn/08/2a/082ae8ef72c94fe3945baf13f43ee422_1489x602.jpg)
* Global roles:管理员等高级用户可以创建基于全局的角色。
* Item roles:针对某个或者某些项目的角色。
在这里添加如下三个角色:
```
baseRole:该角色为全局角色。这个角色需要绑定Overall(全部)下面的Read权限,是为了给所有用户绑
定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is
missing the Overall/Read permission。
role1:该角色为项目角色。使用正则表达式绑定 itcast.*,意思是只能操作itcast开头的项目。
role2:该角色也为项目角色。绑定 itheima.*,意思是只能操作itheima开头的项目。
```
**4. 创建用户**
(1)系统管理(Manage Jenkins) -> 管理用户(Manage Users) -> 新建用户。
(2)分别创建两个用户:lisi、wangwu。
![](https://img.kancloud.cn/a3/a5/a3a5536c9c1db4ab2d789055be75cfaf_1446x390.jpg)
![](https://img.kancloud.cn/a1/0d/a10d1c6b456ec3d9e479454cc86e436c_1432x326.jpg)
**5. 给用户分配角色**
(1)系统管理(Manage Jenkins) -> Manage and Assign Roles -> Assign Roles。
(2)绑定规则如下。
```
lisi 用户分别绑定baseRole和role1角色。
wangwu 用户分别绑定baseRole和role2角色。
```
![](https://img.kancloud.cn/8b/87/8b871dcc1dc705fec1f7e1bb9b4e13bc_1463x764.jpg)
**6. 创建项目测试权限**
(1)以`zhangsan`管理员账户创建两个项目,分别为`itcast01`和`itheima01`。`zhangsan`管理员可以看到所有的项目。
![](https://img.kancloud.cn/e7/45/e74530c30d4a846cbfbb4f84ae91532a_1449x240.jpg)
(2)`lisi`账号只能看到项目`itcast01`。
![](https://img.kancloud.cn/1e/11/1e1117b1729a6f8c07ca1590e9b62353_1439x222.jpg)
(3)`wangwu`账号只能看到项目`itheima01`。
![](https://img.kancloud.cn/aa/a4/aaa47210d98b7bc93d34307ea13a9298_1428x218.jpg)
<br/>
# 7. Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
<br/>
**1. 安装Credentials Binding插件**
要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件。
<br/>
## 7.1 安装Git插件和Git工具
接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins如何管理Gitlab的凭证。
<br/>
**1. Jenkins上安装 Git 插件**
![](https://img.kancloud.cn/30/58/3058f244682de24b2c5c0b94941d47fc_1349x286.jpg)
**2. 在Jenkins机器上安装 Git 工具**
```shell
# yum install git -y
# git --version
git version 1.8.3.1
```
**3. 创建凭证**
系统管理 -> Manage Credentials。
![](https://img.kancloud.cn/a9/49/a94959cc0f370d1bfcd7b459671e4d78_1480x418.jpg)
![](https://img.kancloud.cn/bf/b2/bfb29400e31d34a993c3160e86a07d2f_1426x488.jpg)
![](https://img.kancloud.cn/29/cd/29cd2172621c62e63d5bba40f2734401_1450x201.jpg)
**4. 测试凭证是否可用**
(1)新建任务 -> 输入一个任务名称 -> 源码管理。
![](https://img.kancloud.cn/c1/91/c1911d6a8a5e7480b68fa306142acc26_1569x687.jpg)
(2)立即构建。
![](https://img.kancloud.cn/82/3c/823c67d0eeb4ff49be9b4bc3cff5ea60_1433x522.jpg)
(3)构建完成后查看 控制台输出。
![](https://img.kancloud.cn/3a/62/3a62da0d2e89f1aea38ba3284a0f5b33_1404x263.jpg)
![](https://img.kancloud.cn/72/a1/72a1a04378606f820cf2ed6e972552e6_1370x255.jpg)
(4)到 Jenkins 机器上查看,发现已经从Gitlab成功拉取了代码到Jenkins中。
```shell
# cd /var/lib/jenkins/workspace/test01
# ll
total 20
-rw-r--r--. 1 root root 2636 Dec 14 22:05 email.html
-rw-r--r--. 1 root root 1374 Dec 14 22:05 Jenkinsfile
-rw-r--r--. 1 root root 625 Dec 14 22:05 pom.xml
-rw-r--r--. 1 root root 579 Dec 14 22:05 sonar-project.properties
drwxr-xr-x. 3 root root 17 Dec 14 22:05 src
-rw-r--r--. 1 root root 1499 Dec 14 22:05 web_demo.iml
```
<br/>
## 7.2 设置SSH免密登录
:-: ![](https://img.kancloud.cn/d9/62/d9629bca9d24090705477d7455feae3c_1171x116.jpg)
SSH免密登录示意图
**1. 在 Jenkins 机器以`root`用户生成公钥和私钥**
```shell
# ssh-keygen -t rsa
# cd /root/.ssh/
# ll
-rw-------. 1 root root 1675 Dec 15 10:52 id_rsa 私钥
-rw-r--r--. 1 root root 394 Dec 15 10:52 id_rsa.pub 公钥
```
**2. 把公钥放在Gitlab中**
以`root`账户登录 Gitlab -> 点击头像 -> Settings -> SSH Keys。把文件`id_rsa.pub`的内容粘贴进去。
![](https://img.kancloud.cn/d1/e9/d1e93e2bc8e0dfbcbb23241d29e8849e_1349x531.jpg)
**3. 在Jenkins中添加私钥为凭证**
系统管理 -> Manage Credentials。
![](https://img.kancloud.cn/a9/49/a94959cc0f370d1bfcd7b459671e4d78_1480x418.jpg)
![](https://img.kancloud.cn/a0/37/a037c2ae4cf291f26b3bf1e2f084c533_1126x627.jpg)
**4. 测试凭证是否可用**
(1)新建任务 -> 输入一个任务名称 -> 源码管理。
![](https://img.kancloud.cn/95/c7/95c7ae7eb790cd86be5591da9c165156_1690x479.jpg)
(2)立即构建。
![](https://img.kancloud.cn/e4/fe/e4fe91f2e42289a2433d1e72003e8768_1559x317.jpg)
(3)构建完成后查看 控制台输出。
![](https://img.kancloud.cn/3a/62/3a62da0d2e89f1aea38ba3284a0f5b33_1404x263.jpg)
![](https://img.kancloud.cn/c3/7d/c37d1d85ec06312c76fd2286c022346d_1289x312.jpg)
(4)到 Jenkins 机器上查看,发现已经从Gitlab成功拉取了代码到Jenkins中。
```shell
# cd /var/lib/jenkins/workspace/test02
# ll
total 20
-rw-r--r--. 1 root root 2636 Dec 15 10:57 email.html
-rw-r--r--. 1 root root 1374 Dec 15 10:57 Jenkinsfile
-rw-r--r--. 1 root root 625 Dec 15 10:57 pom.xml
-rw-r--r--. 1 root root 579 Dec 15 10:57 sonar-project.properties
drwxr-xr-x. 3 root root 17 Dec 15 10:57 src
-rw-r--r--. 1 root root 1499 Dec 15 10:57 web_demo.iml
```
<br/>
# 8. Maven安装和配置
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。
<br/>
**1. 安装Maven与配置环境变量**
maven下载地址:https://maven.apache.org/download.cgi
```shell
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
tar -xzf apache-maven-3.8.4-bin.tar.gz -C /opt/install
cd /opt/install/apache-maven-3.8.4/
# pwd
/opt/install/apache-maven-3.8.4
--配置环境变量
# vim /etc/profile
export JAVA_HOME=/opt/install/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
export MAVEN_HOME=/opt/install/apache-maven-3.8.4
export PATH=$PATH:$MAVEN_HOME/bin
# source /etc/profile
# mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /opt/install/apache-maven-3.8.4
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /opt/install/jdk1.8.0_171/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.49.1.el7.x86_64", arch: "amd64", family: "unix"
--修改本地仓库目录为/opt/install/apache-maven-3.8.4/repo
# vim /opt/install/apache-maven-3.8.4/conf/settings.xml
<localRepository>/opt/install/apache-maven-3.8.4/repo</localRepository>
```
**2. 全局工具配置关联JDK和Maven**
(1)系统管理 -> 全局工具配置 -> JDK -> 新增JDK。
![](https://img.kancloud.cn/ec/fc/ecfced76fd26b096692e7a780e1c57a1_1459x457.jpg)
(2)系统管理 -> 全局工具配置 -> Maven -> 新增Maven。
![](https://img.kancloud.cn/2f/74/2f740b3305e9856db57767edc0f6dc25_1449x374.jpg)
**3. 添加Jenkins全局变量**
系统管理 -> 系统配置 -> 全局属性 -> 环境变量。
![](https://img.kancloud.cn/b2/53/b253a3a693c70bf9fc425e6d6542ee89_1396x403.jpg)
![](https://img.kancloud.cn/03/82/0382749d7f0b27fbef738001e6b2e279_1392x243.jpg)
![](https://img.kancloud.cn/f7/50/f750b759aa677ebe17c3e2524f3319fe_1421x247.jpg)
**4. 测试Maven是否配置成功**
在Jenkins上随便找之前好的一个任务,比如 test02。
![](https://img.kancloud.cn/9d/64/9d64c20262f746f02ab81e41122a36c3_1386x267.jpg)
![](https://img.kancloud.cn/21/2a/212a887ce46caf049684ca7c797b47af_1180x364.jpg)
再次构建,控制台看到把项目打成 war,代码Maven配置成功。
![](https://img.kancloud.cn/98/d1/98d1816f7c572b2b193a71741bfe7f88_1255x363.jpg)
<br/>
- 相关概念
- 软件开发生命周期
- 软件开发瀑布模型
- 软件的敏捷开发
- 持续集成
- Jenkins介绍
- Jenkins是什么
- Jenkins的特征
- Jenkins环境搭建
- 搭建架构说明
- Gitlab安装与配置
- Jenkins安装与配置
- Tomcat安装和配置
- Jenkins构建项目
- 自由风格软件项目构建
- Maven项目构建
- Pipeline流水线项目构建
- Pipeline是什么
- Pipeline语法
- 流水线项目构建演示
- Pipeline Script from SCM
- 构建触发器
- 触发远程构建
- 其他工程构建后触发
- 定时构建
- 轮询SCM
- Git hook自动触发构建
- 参数化构建
- 配置邮箱发送构建结果
- SonarQube代码审查平台
- SonarQube是什么
- SonarQube平台搭建
- 安装jdk11
- 安装数据库PostgreSQL12
- 安装SonarQube
- SonarQube实现代码审查
- Jenkins+Docker+SpringCloud(1)
- 流程说明
- 环境搭建
- 服务器列表
- Docker安装与配置
- Harbor安装与配置
- Nginx安装与配置
- 微服务持续集成演示
- Jenkins上配置
- 微服务项目配置
- 部署前端静态web网站