持续集成环境

Jenkins安装

  1. 安装JDK
    Jenkins需要依赖JDK,所以先安装JDK11
sudo yum install -y java-11-openjdk*
  1. 获取jenkins安装包
wget https://mirrors.aliyun.com/jenkins/redhat-stable/jenkins-2.426.1-1.1.noarch.rpm
  1. 安装安装包
sudo rpm -ivh jenkins-2.426.1-1.1.noarch.rpm
  1. 修改Jenkins配置
sudo vim /usr/lib/systemd/system/jenkins.service

修改内容如下:

user=root
Environment="JENKINS_PORT=8888"
  1. 启动Jenkins
systemctl start jenkins
  1. 添加防火墙端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
  1. 打开浏览器访问
http://172.139.20.35:8888

img
8. 根据页面提示的文件,去找默认密码

cat /var/lib/jenkins/secrets/initialAdminPassword
  1. 跳过插件安装
    因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以暂时先跳过插件安装。
    img
  2. 创建用户
    img
    img

Jenkins插件管理

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

  1. 修改Jenkins插件地址
    Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

img
点击高级设置
img
将原有的URL修改成清华源的网址
img
2. 重启Jenkins

systemctl restart jenkins
  1. 下载中文汉化插件
    img
    img
    重启Jenkins
    img
    img
    可以看到已经变成中文了
    img

用户权限管理

可以利用Role-based Authorization Strategy插件来管理jenkins用户权限

安装Role-based Authorization Strategy插件

img
报错:
img
出现以上报错,说版本不够,原先安装的是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看
    img

开启权限全局安全配置

img
授权策略切换为"Role-Based Strategy",保存
img

创建角色

在系统管理页面进入 Manage and Assign Roles
img
点击“manage Roles”
img
img
img

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Item roles(项目角色):针对某个或者某些项目的角色
Agent roles(奴隶角色):节点相关的权限

我们添加以下三个角色:

  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
  • role1:该角色为项目角色。使用正则表达式绑定"yuxliu.*",意思是只能操作yuxliu开头的项目。
  • role2:该角色也为项目角色。绑定"xdn.*",意思是只能操作xdn开头的项目。
    img
    img
    保存。

创建用户

在系统管理页面进入 管理用户
img
img
分别创建两个用户:jack和eric
img

给用户分配角色

系统管理页面进入 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
    img
    img
    保存

Jenkins凭证管理

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

安装Credential Binding插件

要在jenkins使用凭证管理功能,需要安装Credential Binding插件
img
安装插件后,在安全这里多了“凭据管理”菜单,在这里管理所有凭证
img
进入凭证管理添加凭证
img
可以添加的凭证有5种:
img

  • 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密钥)
    img

安装Git插件和Git工具

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

  • Git插件安装
    img
  • CentOS7上安装Git工具
sudo yum install git -y 

SSH密钥类型

SSH免密登录示意图
img
(1)使用root用户生成公钥和私钥

ssh-keygen -t rsa

在/root/.ssh/目录保存的公钥和私钥
img

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

(2)把生成的公钥放在Gitlab中
查看公钥信息
img
进入到测试项目添加ssh-key
img
img
将公钥信息复制到Gitlab
img
结果如下
img

(3)把生成的私钥放在Jenkins中
查看私钥信息
img
到Jenkins上添加凭据,选择SSH
img
添加私钥信息
img

Maven安装和配置

在Jenkins集成服务器上,我们需要安装Maven来翻译和打包项目。

安装Maven

  1. 下载maven软件包
wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
  1. 创建一个目录用来存放maven
sudo mkdir /opt/maven
  1. 将maven软件包解压到/opt/maven目录下
sudo tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /opt/maven

配置环境变量

  1. 添加环境变量
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
  1. 配置生效
source /etc/profile
  1. 查找Maven版本
mvn -v

img

全局工具配置关联JDK和Maven

系统配置->全局工具配置->JDK->新增JDK
img
配置如下:
img
系统配置->全局工具配置->Maven->新增Maven,配置如下:
img

添加Jenkins全局变量 JAVA_HOME、M2_HOME、PATH+EXTRA

系统配置->全局属性->环境变量,添加三个全局变量
img
img
img

修改Maven的settings.xml

mkdir /root/repo  创建本地仓库
vim /opt/maven/apache-maven-3.9.9/conf/settings.xml

添加本地仓库地址: /opt/repo

添加阿里云私服地址

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorof>central</mirror>
</mirror>

新开一台服务器,安装Tomcat

  1. 安装JDK
sudo yum install -y java-11-openjdk*
  1. 下载tomcat软件包
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.28/bin/apache-tomcat-10.1.28.tar.gz
  1. 创建目录
sudo mkdir -p /opt/tomcat
  1. 解压Tomacat软件包到/opt/tomcat目录下
sudo tar -zxvf apache-tomcat-10.1.28.tar.gz -C /opt/tomcat
  1. 启动tomcat
[root@localhost ~]# cd /opt/tomcat/apache-tomcat-10.1.28/bin/
[root@localhost /opt/tomcat/apache-tomcat-10.1.28/bin]# ./startup.sh 

img

  1. 关闭防火墙或者开放8080端口
  • 关闭防火墙
systemctl stop firewalld
systemctl disable 
  • 开放8080端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
  1. 浏览器访问tomacat
    img

配置Tomcat用户角色权限

默认情况下Tomcat是没有配置用户角色权限的
img
img

但是,后续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

img
注意:为了能否刚才配置的用户登录到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
img
img

posted @ 2024-08-05 21:08  小肚腩吖  阅读(22)  评论(0编辑  收藏  举报