持续集成环境
Jenkins安装
- 安装JDK
Jenkins需要依赖JDK,所以先安装JDK11
sudo yum install -y java-11-openjdk*
- 获取jenkins安装包
wget https://mirrors.aliyun.com/jenkins/redhat-stable/jenkins-2.426.1-1.1.noarch.rpm
- 安装安装包
sudo rpm -ivh jenkins-2.426.1-1.1.noarch.rpm
- 修改Jenkins配置
sudo vim /usr/lib/systemd/system/jenkins.service
修改内容如下:
user=root
Environment="JENKINS_PORT=8888"
- 启动Jenkins
systemctl start jenkins
- 添加防火墙端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
- 打开浏览器访问
http://172.139.20.35:8888
8. 根据页面提示的文件,去找默认密码
cat /var/lib/jenkins/secrets/initialAdminPassword
- 跳过插件安装
因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以暂时先跳过插件安装。
- 创建用户
Jenkins插件管理
Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。
- 修改Jenkins插件地址
Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
点击高级设置
将原有的URL修改成清华源的网址
2. 重启Jenkins
systemctl restart jenkins
- 下载中文汉化插件
重启Jenkins
可以看到已经变成中文了
用户权限管理
可以利用Role-based Authorization Strategy插件来管理jenkins用户权限
安装Role-based Authorization Strategy插件
报错:
出现以上报错,说版本不够,原先安装的是2.426.1,这里要求要2.440.3以上,我们升级一下版本
- 下载最新版本的安装包
wget https://mirrors.aliyun.com/jenkins/redhat-stable/jenkins-2.462.1-1.1.noarch.rpm
- 升级版本
sudo rpm -Uvh jenkins-2.462.1-1.1.noarch.rpm
- 重启服务
sudo systemctl restart jenkins
- 安装成功后可以到Installed plugins看
开启权限全局安全配置
授权策略切换为"Role-Based Strategy",保存
创建角色
在系统管理页面进入 Manage and Assign Roles
点击“manage Roles”
Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Item roles(项目角色):针对某个或者某些项目的角色
Agent roles(奴隶角色):节点相关的权限
我们添加以下三个角色:
- baseRole:该角色为全局角色。这个角色需要绑定Overall下面的read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:
用户名 is missing the Overall/Read permission
- role1:该角色为项目角色。使用正则表达式绑定"yuxliu.*",意思是只能操作yuxliu开头的项目。
- role2:该角色也为项目角色。绑定"xdn.*",意思是只能操作xdn开头的项目。
保存。
创建用户
在系统管理页面进入 管理用户
分别创建两个用户:jack和eric
给用户分配角色
系统管理页面进入 Manage and Assign Roles,点击Assign Roles
Dashboard->系统管理->Manage and Assign Roles->Assign Roles
绑定规则如下:
- eric用户分别绑定baseRole和role1角色
- jack用户分别绑定baseRole和role2角色
Dashboard->系统管理->Manage and Assign Roles->Assign Roles
保存
Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便jenkins可以和这些第三方的应用进行交互。
安装Credential Binding插件
要在jenkins使用凭证管理功能,需要安装Credential Binding插件
安装插件后,在安全这里多了“凭据管理”菜单,在这里管理所有凭证
进入凭证管理添加凭证
可以添加的凭证有5种:
- 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密钥)
安装Git插件和Git工具
为了让Jenkins支持从gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。
- Git插件安装
- CentOS7上安装Git工具
sudo yum install git -y
SSH密钥类型
SSH免密登录示意图
(1)使用root用户生成公钥和私钥
ssh-keygen -t rsa
在/root/.ssh/目录保存的公钥和私钥
id_rsa:私钥文件
id_rsa.pub:公钥文件
(2)把生成的公钥放在Gitlab中
查看公钥信息
进入到测试项目添加ssh-key
将公钥信息复制到Gitlab
结果如下
(3)把生成的私钥放在Jenkins中
查看私钥信息
到Jenkins上添加凭据,选择SSH
添加私钥信息
Maven安装和配置
在Jenkins集成服务器上,我们需要安装Maven来翻译和打包项目。
安装Maven
- 下载maven软件包
wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
- 创建一个目录用来存放maven
sudo mkdir /opt/maven
- 将maven软件包解压到/opt/maven目录下
sudo tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /opt/maven
配置环境变量
- 添加环境变量
sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64
export MAVEN_HOME=/opt/maven/apache-maven-3.9.9/bin
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
- 配置生效
source /etc/profile
- 查找Maven版本
mvn -v
全局工具配置关联JDK和Maven
系统配置->全局工具配置->JDK->新增JDK
配置如下:
系统配置->全局工具配置->Maven->新增Maven,配置如下:
添加Jenkins全局变量 JAVA_HOME、M2_HOME、PATH+EXTRA
系统配置->全局属性->环境变量,添加三个全局变量
修改Maven的settings.xml
mkdir /root/repo 创建本地仓库
vim /opt/maven/apache-maven-3.9.9/conf/settings.xml
添加本地仓库地址:
添加阿里云私服地址
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorof>central</mirror>
</mirror>
新开一台服务器,安装Tomcat
- 安装JDK
sudo yum install -y java-11-openjdk*
- 下载tomcat软件包
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.28/bin/apache-tomcat-10.1.28.tar.gz
- 创建目录
sudo mkdir -p /opt/tomcat
- 解压Tomacat软件包到/opt/tomcat目录下
sudo tar -zxvf apache-tomcat-10.1.28.tar.gz -C /opt/tomcat
- 启动tomcat
[root@localhost ~]# cd /opt/tomcat/apache-tomcat-10.1.28/bin/
[root@localhost /opt/tomcat/apache-tomcat-10.1.28/bin]# ./startup.sh
- 关闭防火墙或者开放8080端口
- 关闭防火墙
systemctl stop firewalld
systemctl disable
- 开放8080端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
- 浏览器访问tomacat
配置Tomcat用户角色权限
默认情况下Tomcat是没有配置用户角色权限的
但是,后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置,添加用户及权限。
sudo vim /opt/tomcat/apache-tomcat-10.1.28/conf/tomcat-users.xml
内容如下:
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
</tomcat-users>
用户和密码都是:tomcat
修改完配置后需要重启tomcat
./shutdown.sh
./startup.sh
注意:为了能否刚才配置的用户登录到Tomcat,还需要修改以下配置
sudo vim /opt/tomcat/apache-tomcat-10.1.28/webapps/manager/META-INF/context.xml
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
把上面这行注释掉即可,这行的意思是禁止远程访问,注释掉就是允许远程访问
然后重新访问 manager webapp