Loading

3_持续集成环境-Jenkins安装

Jenkins安装

1)安装JDK,Jenkins从需要依赖JDK11,所以先安装JDK11

yum -y install java-11-openjdk

jdk1.8安装方式:

yum install java-1.8.0-openjdk* -y

卸载命令:

yum remove java-1.8.0-openjdk* -y

jdk默认安装目录为:

/usr/lib/jvm

验证:

新版本需要配置环境变量:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

2)获取jenkins安装包

下载页面:https://jenkins.io/zh/download/

清华源下载:https://mirrors.tuna.tsinghua.edu.cn/

安装文件为:jenkins-2.414.2-1.1.noarch.rpm

卸载jenkins:

#查看Jenkins
rpm -qa | grep jenkins
#卸载jenkins
rpm -e jenkins
#查看Jenkins的安装文件
rpm -ql jenkins 
#彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf

3)将安装包上传到服务器(192.168.211.156)中,进行安装:

rpm -ivh jenkins-2.414.2-1.1.noarch.rpm

4)修改Jenkins配置

vim /etc/syscofig/jenkins

新版本配置文件地址为:

/usr/lib/systemd/system/jenkins.service

修改内容如下:

# 执行jenkins命令的linux用户
User=root
# 端口
JENKINS_PORT=8888

5)启动Jenkins

systemctl start jenkins

6)打开浏览器访问:http://192.168.211.156:8888

注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口

# --permanent 添加的端口号永久生效
sudo firewall-cmd --zone=public --add-port=开放的端口号/协议[tcp/udp] --permanent
# 使新增的端口配置立即生效
sudo firewall-cmd --reload

7)获取并输入admin账户密码

cat /var/lib/jenkins/secrets/initialAdminPassword

8)暂时跳过插件安装

因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经常会失败,所以我们暂时先跳过插件安装

操作步骤:点击【选择插件来安装】-->选择【无】选项-->选择【安装】

9)添加一个管理员账户,并进入Jenkins后台,选择【保存并完成】

用户名:yangyongjun;密码:5bepADdZ

Jenkins插件管理

Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能都需要依靠插件完成。

修改Jenkins插件下载地址

Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:

操作步骤:【Jenkins】-->【Manage Jenkins】-->【Manage Plugins】,点击Available

这样做是为了把Jenkins官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址

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

 最后,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址:

操作步骤:【Manage Plugins】-->点击【Advanced】-->【Update Site】栏中修改-->点击【submit】

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在浏览器输入:http://192.168.211.156:8888/restart,重启Jenkins。

下载中文汉化插件

操作步骤:【Jenkins】->【Manage Jenkins】->【Manage Plugins】,点击Available,搜索【Chinese】:

安装之后重启后,界面如下:

Jenkins用户权限管理

我们可以使用Role-based Authorization Strategy 插件来管理Jenkins用户权限

安装Role-based Authorization Strategy插件:

开启权限全局安全配置

操作步骤:点击【Manage Jenkins】-->点击【Configure Global Security】-->修改授权策略切换为【Role-Based Strategy】保存。

创建角色

操作步骤:点击【Manage Jenkins】--> 点击【Manage and Assign Roles】

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Project roles(项目角色):针对某个或者某些项目的角色

Slave roles(奴隶角色):节点相关的权限

我们添加测试角色:
baseRole全局角色:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。

注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
web_demo_role角色:web_demo项目的角色。

创建用户 

操作步骤:点击【Manage Jenkins】--> 点击【Manage Users】

新增两个用户【zhangsan】密码:【DmV5p2nK】、【lisi】密码:【PYMQB6Wj】:

直接登录,提示没有权限:

给用户分配角色:

都有【base_role】角色,给张三分配项目【web_demo】角色

并新建web_demo项目:

登录【zhangsan】账号查看项目,用户【lisi】无法查看项目。

Jenkins凭证管理

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

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

可以添加的凭证有5种:

【Username with password】:用户名和密码
【SSH Username with private key】: 使用SSH用户和密钥
【Secret file】:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
【Secret text】:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
【Certificate】:通过上传证书文件的方式 

以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证:

安装Git插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。

Git插件安装: 

操作步骤:【Manage Jenkins】--> 【manager plugin】-->【available plugin】中搜索Git并安装。

centOS7Git工具安装:

# 安装git
yum install git -y

# 安装后查看版本
git --version

用户密码类型

1)创建凭证
操作步骤:【Manage Jenkins】-->选择【Manage Credentials】-->点击【全局】-->点击【Add Credentials】

添加【Username with password】类型全局凭据:

用户名:【jenkinsGitUser】密码:【3k8w2kM0】

2)测试凭证是否可用

在gitlab中新增用户【jenkinsGitUser】并设置密码,配置相关项目的开发者权限。

为项目【web_demo】的构建步骤添加配置信息,添加步骤从仓库中拉去代码:

点击构建开始拉去代码,日志信息显示拉取代码成功:

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

SSH密钥类型

SSH免密登录原理图:

1)使用root用户生成公钥和私钥

# 密钥对生成
ssh-keygen -t rsa

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

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

2)把生成的公钥放在Gitlab中
操作步骤:【以root账户登录】-->【点击头像】->【Settings】->【SSH Keys】
复制刚才id_rsa.pub文件的内容到这里,点击"Add Key":

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

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

 

posted @ 2023-10-15 00:17  1640808365  阅读(92)  评论(0编辑  收藏  举报