ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
:-: 服务器列表(虚拟机统一采用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/>