Jenkins详细安装设置部署
简介Jenkins是一个开源软件项目,是基于Java开发的一种连续集成工具。主要做的事情就是从git中拉代替码,根据设置信息打包;把打好的包传输到目标服务器,并可以执行一些shell脚本,使项目打包发布一键完成。
https://i-blog.csdnimg.cn/blog_migrate/1454d58620a813a8605d9823796a6301.png
一、安装jdk
jenkins的安装需要依赖于jdk。
参考: https://editor.csdn.net/md/?articleId=135966281
[*] 新的服务器需要支持文件上传和下载,安装rz(上传)sz(下载)
yum install lrzsz -y
[*] 利用下令rz上传linux下的jdk安装包到服务器,输入rz后会弹出一个选项框,选择对应的jdk安装包(最新版的jenkins需要jdk11以上),2022年7月2日起,jenkins新版本不再支持java8,仅支持java11和java17。
二、安装jenkins
[*] 输入下令安装jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
[*] 查看Jenkins服务设置文件
systemctl status jenkins
https://i-blog.csdnimg.cn/blog_migrate/e24d1d7faa85dc79047adaca9976fb3a.png
[*] 修改Jenkins服务设置文件
修改用户和组为root;指定jdk目录;修改启动端口号
vim /usr/lib/systemd/system/jenkins.service
https://i-blog.csdnimg.cn/blog_migrate/7835c050efb073fdecc6d7d60b17a788.png
https://i-blog.csdnimg.cn/blog_migrate/a23211b40767b038c80180f7e83f3382.png
[*] 重新加载系统设置
systemctl daemon-reload
[*] 启动jenkins
# 启动
systemctl start jenkins
# 停止
systemctl stop jenkins
[*] 开放Jenkins访问端口。(端口与设置文件中同等)
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
[*] 浏览器访问(ip:port),出现这个界面说明安装成功,查看Jenkins密码进行下一步
https://i-blog.csdnimg.cn/blog_migrate/d6cd5dc39716b5f58c8e166e7f6c1975.png
sudo yum install -y fontconfig
fc-cache --force
然后重启:
systemctl restart jenkins
https://i-blog.csdnimg.cn/blog_migrate/722914e17a30bd7bb8a2fdd960b2885d.png
[*] 点击选择插件安装,然后选择无进行下一步:
这里假如熟悉 Jenkins ,可以【选择插件来安装】,假如不熟悉,还是按照保举来吧。
7-1、https://i-blog.csdnimg.cn/blog_migrate/0c19b4a5ea12d5d15172f3862f456b61.png
7-2、
https://i-blog.csdnimg.cn/blog_migrate/c60b7b47594840a7175cbe6814623ff7.png
留意:
这里假如不熟悉Jenkins,可以选择【安装保举的插件】。即可,省事。
[*] 创建用户
https://i-blog.csdnimg.cn/blog_migrate/ddde6bcee5b8a2a9307a7ac2bc5e3995.png
[*] 生存实例【】
https://i-blog.csdnimg.cn/blog_migrate/a66c4146ae7fe34639e97f944d0e5faa.png
[*] 进入Jenkins。
https://i-blog.csdnimg.cn/blog_migrate/836c852a5b1f794da254c3c8d39b4915.png
[*]

三、插件安装
假如上面插件安装,选择的不是【安装保举的插件】,而是【选择插件来安装】–【无】
1. 缓存插件列表。
点击Manage Jenkins --》 Manage Plugins --》Available 等待浏览器加载完成。(这样做是为了把Jenkins官方的插件列表下载到本地
https://i-blog.csdnimg.cn/blog_migrate/0b2d2c7f56106958fcdd05bed2853d1a.png
新版本
https://i-blog.csdnimg.cn/blog_migrate/c39d3cae50f8e4e15fe1658ff142df01.png
旧版本
https://i-blog.csdnimg.cn/blog_migrate/0adbdc47b361805adbe9b3a5e48fe22a.png
2. 修改Jenkins镜像源。
进入设置目录,修改镜像源为清华源。
cd /var/lib/jenkins
/updates
sed -i 's/https:\/\/updates.jenkins.io\/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
https://i-blog.csdnimg.cn/blog_migrate/b5b443f171545223b70f0fc8d6e1f054.png
然后回到jenkins的Plugins页面,点击Advanced,把Update Site改为国内插件下载地址 。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
https://i-blog.csdnimg.cn/blog_migrate/ef27a9eed517021eae18d978954bba6a.png
Sumbit后,在浏览器输入: http://ip:port/restart ,重启Jenkins。
http://192.168.21.3:8086/restart
中文版https://i-blog.csdnimg.cn/blog_migrate/65a4972230360d6542a30a37f969b275.png
英文版:
https://i-blog.csdnimg.cn/blog_migrate/fb1e27263673adcf847abb329e2b1eea.png
3. 下载汉化插件。
点击Manage Jenkins --》Manage Plugins ,点击 Available ,搜索 “Chinese”。
https://i-blog.csdnimg.cn/blog_migrate/f0d6d2273344a89d96612376afdd1d48.png
安装完成后重启jenkins。
https://i-blog.csdnimg.cn/blog_migrate/d337301b7e2faedd22fe9f47bcfc3892.png
四、卸载Jenkins
依次执行下令。
1、rpm卸载
rpm -e jenkins
2、检查是否卸载成功
rpm -ql jenkins
3、彻底删除残留文件:
find / -iname jenkins | xargs -n 1000 rm -rf
五、常见问题
1. 实例离线
由于网速较慢,纵然该Jenkins所在机器可以联网,但是还是会出现该jenkins实例已经离线,这个时间不要慌。我们先将Jenkins服务关闭,修改Jenkins镜像源重新启动即可。
https://i-blog.csdnimg.cn/blog_migrate/cb96a63d58834a097337807c3bdb6254.png
具体操作如下:
[*] 停止jenkins
systemctl stop jenkins
[*] 进入Jenkins工作目录
cd /var/lib/jenkins
[*] 修改镜像源
vim hudson.model.UpdateCenter.xml
将url修改为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
https://i-blog.csdnimg.cn/blog_migrate/b872092c2aec3dfd7ae3cfb6f2e6834f.png
[*] 重启jenkins即可
重启后重新根据上述步骤操作
systemctl start jenkins
六、安装git
[*]先验证有没有安装git --version
[*]假如没有安装,执行安装下令:yum install git
[*]查看安装git是否成功:git --version
七、安装maven: /usr/local/soft/cicd
[*]打开maven 网站 https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/
选择版本:
https://i-blog.csdnimg.cn/blog_migrate/c33f46d3d799aaff6f03607b0f614cd0.png
https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
[*] 假如没有 wget ,先安装, 如有,忽略
yum install -y wget
然后:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
tar -zxvf apache-maven-3.9.5-bin.tar.gz
mv apache-maven-3.9.5 maven
cd maven
https://i-blog.csdnimg.cn/blog_migrate/f785cef2001713e5962c9958cbc98f0f.png
[*] 单独设置Maven
vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
如图:
https://i-blog.csdnimg.cn/blog_migrate/880866a043cbc446c5693455b6ee27a5.png
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin
export JAVA_HOME=/usr/local/soft/java/openjdk17
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export PATH=$PATH:/usr/local/soft/node-v16/bin
# minio
export MINIO_ROOT_USER=ltkj
export MINIO_ROOT_PASSWORD=ltkj.com
export LD_LIBRARY_PATH=/usr/local/lib
export LIBLEPT_HEADERSDIR=/usr/local/include
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# mvn
export M2_HOME=/usr/local/soft/cicd/maven
export PATH=$M2_HOME/bin:$PATH
[*] 修改maven的setting.xml设置信息
4-1、进入目录:
cd/usr/local/soft/cicd/maven/conf
4-2、编辑setting.xml设置文件:
vi settings.xml
4-2-1、设置存放jar包的目录:
https://i-blog.csdnimg.cn/blog_migrate/8b607a289aa4afe84dc7b5ad9b10e5a3.png
4-2-2、设置私服的serviers
<servers>
<server>
<id>releases</id>
<username>knet</username>
<password>knetfordeployment</password>
</server>
<server>
<id>Project Releases</id>
<username>knet</username>
<password>knetfordeployment</password>
</server>
<server>
<id>Project Snapshots</id>
<username>knet</username>
<password>knetfordeployment</password>
</server>
<server>
<id>huaweicloud</id>
<username>anonymous</username>
<password>devcloud</password>
</server>
</servers>
4-2-3、设置阿里云镜像
<mirrors>
<mirror>
<id>public</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>spring</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring插件仓库</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云gradle-plugin</name>
<url>https://maven.aliyun.com/repository/gradle-plugin</url>
</mirror>
</mirrors>
4-2-4、设置maven私服nexus及激活的设置
<profiles>
<profile>
<id>maven-repo</id>
<repositories>
<repository>
<id>spring</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!--https://developer.aliyun.com/mvn/guide -->
<repository>
<id>jcenter</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>maven-repo</activeProfile>
<!-- <activeProfile>alwaysActiveProfile_</activeProfile>-->
</activeProfiles>
[*] 创建存放jar包的目录repo,需要与setting.xml中设置的同等:
切到需要创建的目录下:
cd /usr/local/soft/cicd/
创建目录:
mkdir repo
给目录赋读写权限:
chmod 777 repo
————————————————
八、Jenkins全局工具设置
在jenkins首页依次:进入【系统管理】>>【全局工具设置】:
https://i-blog.csdnimg.cn/blog_migrate/9c7762f76876033b86607c8d6702941a.png
1. jdk设置:输入jdk安装的目录
https://i-blog.csdnimg.cn/blog_migrate/325c932736cfd86a647cf8c2dcb21449.png
2. git设置:输入git的目录
https://i-blog.csdnimg.cn/blog_migrate/f34d46d0c0d374a6bc6fc36330661c8b.png
3. maven设置:输入maven的目录
https://i-blog.csdnimg.cn/blog_migrate/22f62d31348bac168e16033341896a34.png
九、SSH插件安装
jenkins打完包需要上传到新的服务器上,此处利用ssh的方式上传,添加ssh插件。
【系统管理】-> 【插件管理】-> 【可选插件】
https://i-blog.csdnimg.cn/blog_migrate/99563e1e1e0e5567d448a6922a89b90b.png
所需插件如下: 假如已经安装,无需再次安装
SSH 、Maven Integration 、Git plugin、Publish Over SSH,Role-based 。
https://i-blog.csdnimg.cn/blog_migrate/4f90756059b8e68de12a991e01d967e9.png
安装完成后新建工程时,构建环境选项才会出现SSH相关的选项
https://i-blog.csdnimg.cn/blog_migrate/0a19052df17d715d535d93207380eee5.png
附加:停止到发稿前,新版本的jenkins不提供Publish Over SSH插件
从可选库里面检索不到,jenkins官网停息了插件,原因是存在XSS和CSRF攻击,目前没有修复,但是我们利用内网部署,不存在这种情况,外网部署的情况需要慎重考虑。
https://i-blog.csdnimg.cn/blog_migrate/66a9f5593d6a83222410d7881a83e201.png
可以手动添加Publish Over SSH插件到jenkins,需要的文件下载git地址:
https://github.com/zhangliqingyun/publishssh.git
参考:https://blog.51cto.com/u_13272819/6540815
目录切到:
/var/lib/jenkins/plugins
把这两个文件添加进行,解压赋值上对应的权限
https://i-blog.csdnimg.cn/blog_migrate/2c1a0ba8a6e5261cdbeb35343724faf1.png
添加完成后即可在已安装插件中体现,创建项目的时间可以直接利用,在设置ssh服务器的位置也体现
https://i-blog.csdnimg.cn/blog_migrate/e73d3aab48d63f13f1b586f380579e94.png
https://i-blog.csdnimg.cn/blog_migrate/86f0f9822338804631be99c39f2069eb.png
十、SSH传输服务器设置
点击【系统管理】-》【系统设置】
系统设置主要定义,Jenkins本身的一些设置,邮件、远程服务器管理、构建参数等,这里先设置远程主机,后面自动发布时会用到,找到Publish over SSH相关部门。
https://i-blog.csdnimg.cn/blog_migrate/a63f8cef4170e0ef0a4390bd2ef60b6d.png
1.Jenkins SSH Key设置jenkins部署所在服务器的信息
Passphrase:SSH的密码,利用用户名/密码登录时为用户名的密码,利用私钥登录时为私钥的密码,没有就留空
Path to key:SSH私钥的文件路径
Key:私钥
①在安装jenkins的服务器上执行下令天生私钥信息
ssh-keygen -t rsa
全部按回车执行不需要输入密码,执行完或会在目录/root/.ssh下天生私钥信息
https://i-blog.csdnimg.cn/blog_migrate/9565297a9c61943cc9d5fb3ff6586563.png
②Passphrase内输入登录服务器的密码
③Path to key内输入私钥的文件地址:
/root/.ssh/id_rsa
④Key为id_rsa的文本内容,可以利用下令:sz id_rsa把文件下载下来,把文本内容粘贴进行
2.SSH Servers设置需要把打好的jar包上传到的服务器信息(发布业务系统的服务器)
https://i-blog.csdnimg.cn/blog_migrate/a012ff74259dd44e395f2bc266058c73.png
点击新增添加ssh服务器,可以根据需要添加多台。
Name:SSH节点设置的名称,在Job中利用Publish over SSH插件时,此名称将出如今"SSH Server"中"Name"的下拉列表中。
https://i-blog.csdnimg.cn/blog_migrate/dd64a6cb4b27bbba79987152d042f869.png
Hostname: 主机IP
Username:主机用户名
Remote Derictory: 运程机器上真实存在的目录,并且"Username"指定的用户要有访问此目录的权限,插件将把文件传送到此目录下;
登录服务器创建目录:
mkdir u01
给u01目录赋权限:
chmod 775 u01
登录远程服务器利用机密的方式,点击高级睁开进行设置:
https://i-blog.csdnimg.cn/blog_migrate/71f7af966686e62e9ed02fb90021a00b.png
勾选利用机密登录: Use password authentication, or use a different key,点击Change Password设置添加的用户登录服务器的密码
https://i-blog.csdnimg.cn/blog_migrate/56b341da689a8b823aad5afd5d115631.png
也可以不利用密码,免密登录的方式:把部署jenkins的rsa.pub文件拷贝到目标机器的authorized_keys下,到目标服务器下执行
vi authorized_keys
,把公钥内容粘贴进行,然后重启目标服务器的shh
systemctl restart sshd.service
https://i-blog.csdnimg.cn/blog_migrate/c95051817e815048c4aec8fbb9719514.png
https://i-blog.csdnimg.cn/blog_migrate/0f1ff7aa11081228f1aaf5a186ad1a17.png
点击Test Configuration按钮测试设置的服务器是否能正常链接:当出现Success表示链接正常
十一、页面设置发布工程
1.创建视图,把工程放在视图中进行管理
https://i-blog.csdnimg.cn/blog_migrate/d2069e0410905c518afaa060b953f0c5.png
2.在创建的视图中添加任务
https://i-blog.csdnimg.cn/blog_migrate/3e8377a8e2cb519cc7709e6302f73e96.png
3.输入任务名称,选择构建一个maven项目,勾选添加到当前视图进行创建
https://i-blog.csdnimg.cn/blog_migrate/b02eb476821848f8e94e2be0a1d94ec0.png
4.General选择抛弃旧的构建,输入保持构建的最大个数
https://i-blog.csdnimg.cn/blog_migrate/9df070b5f72488388bb6cc0612fb1665.png
5.源码管理选择Git的方式,添加项目的git地址
https://i-blog.csdnimg.cn/blog_migrate/ae51a016af1b57ea02959ea23a011a9e.png
点击添加访问git地址的用户名和密码信息,此用户需要有权限访问git链接:
https://i-blog.csdnimg.cn/blog_migrate/0173a23933038a1b2340b46ecd5d594f.png
填写对应的用户名密码即可:
https://i-blog.csdnimg.cn/blog_migrate/388821ef4910746410e117c70a7e63a5.png
指定需要打包的分支:
https://i-blog.csdnimg.cn/blog_migrate/169ea34161361476671e49111ba9c01b.png
6.构建环境
选择:Send files or execute commands over SSH after the build runs 把打包好的jar文件发送后执行下令的方式
https://i-blog.csdnimg.cn/blog_migrate/9755733de0a0dbb9cecf41b7a1b07e79.png
Name:目标主机名称,前面设置主机时有提到,在第七部门的第2点设置的,若是设置了多台,则此处为下拉选择。
Source files:需要传输的文件路径,jenkins默认打出来的jar包放在/var/lib/jenkins/workspace目录下,后面的目录umapp-cloud-service-todolist为创建任务的名称,此处只用填写项目打包后的结尾文件名即可,前缀默认会拼接
https://i-blog.csdnimg.cn/blog_migrate/77487a34740470c7a4cee63d01a4f287.png
Remove prefix:移除文件前缀,当从jenkins服务器把jar文件通过ssh发送到目标服务器后,目标服务器存放jar的目录,需要去掉的前缀(源jenkins存放jar的目录为基础)
Remote directory:远程目录,此目录是基于前面第七部门的第2点设置ssh server时定义的目录(/u01)为根目录。按此设置,则目标服务器上需要存在/u01/builds的目录
7.build打出jar包
Root Pom:设置pom.xml的文件目录
Goals and options:设置maven执行的下令
https://i-blog.csdnimg.cn/blog_migrate/014144af57ed678283ca85a38ebe5d3d.png
-Pdev为激活dev设置,此处的设置对应项目properties或yml设置文件的active(激活设置)
https://i-blog.csdnimg.cn/blog_migrate/d6665bbd44211ad33b6c221b0b532ccc.png
–pl xxx-service/xxx-service-xx:只打包xxx-service/xxx-service-xx这个项目,因为xxx-service目录下可能存在多个项目
-am:表示同时处理选定模块所依赖的模块,此处xxx-service-xxx可能会依赖于其他模块,利用am(also-make)把依赖的一并打包进来
十二、目标发布服务器设置
1.起首确保jar文件操作的目录/u01存在(若不存在可以执行创建下令mkdir u01
),并且有权限(若没有权限可以执行下令:chmod 775 u01
),在上面第七部门第1点已经介绍创建过此目录
https://i-blog.csdnimg.cn/blog_migrate/1da7f45fa542fa9a4062f2a3c718e2e5.png
2.在u01目录下创建存放jar包的目录builds:
mkdir builds
并且赋权限:
chmod 775 builds
builds的定名对应第八部门的第6点Remote directory内容
https://i-blog.csdnimg.cn/blog_migrate/a71f3849e1e1db049d49f97d4fb83aea.png
3.在u01下创建存放执行文件的目录scripts:
mkdir scripts
并且赋权限:
chmod 775 scripts
scripts的定名对应第八部门的第6点Exec command的部门内容
—
https://i-blog.csdnimg.cn/blog_migrate/14bcb85d05fb0ce6cd228a65519dc2e8.png
4.在本身的电脑创建一个名为:umapp-cloud-devops.sh的linux执行文件,编辑好后上传到/u01/scripts目录下,文件定名对应第八部门的第6点Exec command的部门内容。
可执行文件吸收4个参数,提供start启动的方法,重启restart的方法,停止stop的方法,删除备份del_bak的方法,备份bak的方法
————————————————
#!/bin/bash
# 操作名称
optionName=$1
# Jar项目名称
appName=$2
# 项目路径
appDir=$3
# 内存配置级别 0:256m 1:512m 2:1G 3:2G 4:4G
MemConfLevel=$4
# 创建项目目录
appPath="/u01/project/umapp/$appDir"
if [ ! -d "$appPath" ];
then
mkdir $appPath
fi
# 帮助说明
function usage()
{
echo "Usage: sh /u01/scripts/umapp-cloud-devops.sh [-optionName] "
echo "Example: sh /u01/scripts/umapp-cloud-devops.sh restart umapp-cloud-auth-1.0.0 auth 0"
echo "where options include:"
echo " start 启动app"
echo " stop 停止app"
echo " restart 重启app"
echo " status 查看状态"
}
if [ "$optionName" == "--help" ];
then
usage;
exit 1
fi
if [ "$optionName" == "" ];
then
echo -e "\033[0;31m 未输入操作名 \033[0m"
exit 1
fi
if [ "$appName" == "" ];
then
echo -e "\033[0;31m 未输入应用名 \033[0m"
exit 1
fi
if [ "$appDir" == "" ];
then
echo -e "\033[0;31m 未输入项目路径 \033[0m"
exit 1
fi
if [ "$MemConfLevel" == "" ];
then
echo -e "\033[0;31m 未输入内存配置级别 \033[0m"
exit 1
fi
# 统计运行应用数
function getCount()
{
count=`ps -ef |grep java|grep "$appName.jar"|grep -v grep|wc -l`
echo $count
}
# 获取pid
function getPid()
{
pid=`ps -ef | grep "$appName.jar" | grep -v grep | awk '{print $2}'`
echo $pid
}
# 启动应用
function start()
{
source /etc/profile
# 统计运行应用数
count=`getCount`
if [ $count != 0 ];then
echo "$appName is running..."
else
echo "$appName is start..."
# 拷贝并覆盖Jenkins生成在builds文件下的jar 到所属的项目路径下
cp -rf /u01/builds/"$appName.jar" /u01/project/umapp/$appDir/
chmod 775 -R /u01/project/umapp/$appDir
cd /u01/project/umapp/$appDir
echo "begin config..."
if [ "$MemConfLevel" = 0 ];then
XmsSize=256m
MetaSize=125m
elif [ "$MemConfLevel" = 1 ];then
XmsSize=512m
MetaSize=256m
elif [ "$MemConfLevel" = 2 ];then
XmsSize=1G
MetaSize=512m
elif [ "$MemConfLevel" = 3 ];then
XmsSize=2G
MetaSize=1G
elif [ "$MemConfLevel" = 4 ];then
XmsSize=4G
MetaSize=2G
fi
JAVA_OPTS="-Xms${XmsSize} -Xmx${XmsSize} -XX:CompressedClassSpaceSize=${MetaSize} -XX:MetaspaceSize=${MetaSize} -XX:MaxMetaspaceSize=${MetaSize} -Xloggc:logs/gc.log"
echo "before start..."
nohup java -jar "$appName.jar" >$appName 2>&1 &
echo "after start..."
fi
}
# 停止应用
function stop()
{
echo "stop $appName..."
count=`getCount`
if [ $count != 0 ];then
pid=`getPid`
echo "stop $appName kill pid $pid"
kill $pid
sleep 2
count=`getCount`
if [ $count != 0 ];then
echo "stop $appName kill -9 pid $pid"
kill -9 $pid
fi
fi
}
# 备份应用
function bak()
{
echo "bak start..."
bakPath="/u01/bak/umapp/$appDir"
if [ ! -d "$bakPath" ];
then
mkdir $bakPath
fi
bakName="/u01/project/umapp/$appDir/${appName}.jar"
if [ -f "$bakName" ];
then
mv -f $bakName $bakPath/${appName}_`date +%Y%m%d%H%M%S`.jar
fi
}
# 删除过期的备份程序只保留最新3次的
function del_bak
{
echo "del_bak start..."
bak_DIR=/u01/bak/umapp/$appDir
if [ -d $bak_DIR ]; then
cd $bak_DIR
bak_count=`ls -lthr | grep -v 'total' | grep"$appName" |wc -l`
if (($bak_count > 3));then
del_count=`expr $bak_count - 3`
ls -thr | grep -v 'total' | grep"$appName"| head -$del_count | xargs rm -rf
fi
fi
echo "del_bak success..."
}
# 重启应用
function restart()
{
stop
del_bak
bak
start
status
}
# 打印启动状态
function status()
{
count=`getCount`
if [ $count != 0 ];then
echo "$appName is success..."
else
echo "$appName is not success..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
--help)
usage;;
*)
echo -e "请使用--help察看可用选项" ;;
esac
5.创建可执行文件需要的目录
①umapp-cloud-devops.sh文件有一个存放jar包启动文件的目录project,把jar从/u01/builds下移动到/u01/project/umapp下,以是在/u01下创建对应的目录:
mkdir project
并且赋权限:
chmod 775 project
chmod 775 project
进入到project:
cd project/
再创建umapp目录:
mkdir umapp
并且赋权限:
chmod 775 umapp
②umapp-cloud-devops.sh文件有一个从/u01/project/umapp备份jar包到/u01/bak/umapp的操作,以是在/u01下创建对应的目录:
mkdir bak
并且赋权限:
chmod 775 bak
进入到bak:
cd bak/
再创建umapp目录:
mkdir umapp
并且赋权限:
chmod 775 umapp
6.设置系统启动需要的日记文件目录
根据项目设置的日记目录在/u01目录下创建日记目录:
mkdir logs
并且赋权限:
chmod 775 logs
https://i-blog.csdnimg.cn/blog_migrate/053977021464e1cf7183e6ea30080f0f.png
https://i-blog.csdnimg.cn/blog_migrate/9b11ef5126f7b783ce97576b592b58b5.png
十三、构建项目
点击项目名称进入构建页面
https://i-blog.csdnimg.cn/blog_migrate/b6b4415f105560ebca4ecf2e18d6e911.png
点击立刻构建
https://i-blog.csdnimg.cn/blog_migrate/8469d7ec6551fa0475ff951f9a32004c.png
点击构建的序号查看构建情况
https://i-blog.csdnimg.cn/blog_migrate/35154756bdd71067b35c7dace34343c7.png
点击控制调输出查看构建情况
https://i-blog.csdnimg.cn/blog_migrate/7dd065e395c64edb68f87feeec127afa.png
末了输出Finished: SUCCESS表示构建成功,从服务的注册中心nacos可以查看系统构建成功
https://i-blog.csdnimg.cn/blog_migrate/654d798ed0cca0551858a950818d8eb9.png
十四、构建前端web工程
前面第八、九、十是构建的java maven项目,此处构建的是纯前端项目。
1.添加前端打包需要的插件,系统管理-》插件管理,添加NodeJs Plugin。
https://i-blog.csdnimg.cn/blog_migrate/e4c06ddbbbf681d9491ebda822bef97a.png
2.设置node全局工具,系统管理-》全局工具设置,找到NodeJs相关设置,选择NodeJs版本。
留意NodeJs的版本选择,需要跟安装jenkins的服务器对应,太高的NodeJs版本,需要的Glibc版本比较高,否则打包的时间会报找不到高版本的Glibc。
/lib64/libm.so.6: version `GLIBC_2.27‘ not found
可以通过下令查看服务器Glibc的版本信息
strings /lib64/libc.so.6 |grep GLIBC
此处我们选择nodeJS-14.17.6。
3.创建一个任务,新建任务-》构建一个自由风格的软件项目
https://i-blog.csdnimg.cn/blog_migrate/593952ce0f4b162ca881fd678ae6ee57.png
4.General选择抛弃旧的构建,输入保持构建的最大个数
https://i-blog.csdnimg.cn/blog_migrate/8c2b5ef834ea65f595dad288731d3021.png
5.源码管理选择Git的方式,添加项目的git地址
https://i-blog.csdnimg.cn/blog_migrate/c48c4f45cf75176836603fcee9409c48.png
点击添加访问git地址的用户名和密码信息,此用户需要有权限访问git链接:
https://i-blog.csdnimg.cn/blog_migrate/e097f14dcbecc2ab7c499c5489c65e45.png
填写对应的用户名密码即可:
https://i-blog.csdnimg.cn/blog_migrate/67e7aacb1875ab09d6957ffddd953f75.png
指定需要打包的分支:
https://i-blog.csdnimg.cn/blog_migrate/5e250ebb1e5c4aa3e24ee4b19c9ddb13.png
6.构建环境选择Provide Node & npm bin/ folder to PATH,选择在全局设置中设置的nodejs
https://i-blog.csdnimg.cn/blog_migrate/0181d965e2d016bce1c873fdbc33a4e5.png
7.构建步骤选择执行shell(Execute shell)
https://i-blog.csdnimg.cn/blog_migrate/056f186b0c427c3d37d0a31cf293f2db.png
设置bulid构建的脚本
#查看环境path
echo $PATH
#打印node版本
node -v
#打印npm版本
npm -v
#安装镜像文件,镜像文件的地址具体根据前端使用的库进行配置
npm install yarn --registry=http://registry.npm.xxx.org/
#开始构建
npm run build
#进入构建完的dist目录
cd dist
#移除上次打的压缩包
rm -rf dist.tar.gz
#把dist目录下的文件全部打成压缩包
tar -zcvf dist.tar.gz *
cd ../
https://i-blog.csdnimg.cn/blog_migrate/5c72f18cd3e7ad195aedd200500ea8c5.png
Name:目标主机名称,前面设置主机时有提到,在第七部门的第2点设置的,若是设置了多台,则此处为下拉选择。
Source files:需要传输的文件路径,jenkins默认打出来的jar包放在/var/lib/jenkins/workspace目录下,后面的目录test-doravis为创建任务的名称,此处只用填写项目打包后的结尾文件名即可,前缀默认会拼接
https://i-blog.csdnimg.cn/blog_migrate/f8c7a73a3615debe73e5483111cbcf00.png
Remove prefix:移除文件前缀,当从jenkins服务器把tar.gz文件通过ssh发送到目标服务器后,目标服务器存放tar.gz的目录,需要去掉的前缀(源jenkins存放tar.gz的目录为基础)
Remote directory:远程目录,此目录是基于前面第七部门的第2点设置ssh server时定义的目录(/u01)为根目录。按此设置,则目标服务器上需要存在/u01/project的目录
Exec command:设置传输到目标服务器后执行的下令
#进入存放tar.gz文件的目录
cd /u01/project
#移除存放前端文件的目录
rm -rf webProject
#创建存放前端文件的目录
mkdir webProject
#解压tar.gz文件,并放到上面创建的目录下
tar -zxvf dist.tar.gz -C webProject
#移除tar.gz文件
rm -rf dist.tar.gz
9.生存设置,立刻构建,构建成功后,在目标服务器存在此dist文件
https://i-blog.csdnimg.cn/blog_migrate/73bd1a0baa8af50cb73176559af4f78e.png
10.若是要访问前端项目,只需在nginx中设置下反向代理即可访问前端页面。
https://i-blog.csdnimg.cn/blog_migrate/4128138db66002dc5b52d8a5efc80571.png
十五、权限分配
1.添加用户,系统管理-》jenkins专有用户数据库-》新建用户,填写用户信息
https://i-blog.csdnimg.cn/blog_migrate/8fb7dbb2386dff983cfe99ada4b96b83.png
2.添加角色分配插件,系统管理-》插件管理,添加Role-based Authorization Strategy插件
https://i-blog.csdnimg.cn/blog_migrate/d01855cd3ea7e54c0f907a50c8295d1a.png
3.修改权限方式 ,系统管理-》全局安全设置,授权策略改为Role-Based Strategy
https://i-blog.csdnimg.cn/blog_migrate/384ecb9b8d879792c7e49d452137b30a.png
修改完成后,在系统管理才会出现Manage and Assign Roles
https://i-blog.csdnimg.cn/blog_migrate/28563bdb74d6651dbf1bfbe0c2a742ec.png
4.设置权限,系统管理-》Manage and Assign Roles,可以设置角色,给用户分配角色。
https://i-blog.csdnimg.cn/blog_migrate/5996c602156ca03c89559b642cdabc6e.png
5.设置角色,系统管理-》Manage and Assign Roles-》Manage Roles
Global roles:最外层比较宏观的权限,全局角色,针对此角色设置操作某个菜单的权限
Item roles:针对任务进行的权限分别,利用正则标识式进行设置
https://i-blog.csdnimg.cn/blog_migrate/3cb8444fb15c4986389d2d486aa76979.png
此处全局角色,设置了一个view,只分配了一个read的权限;任务添加了一个web角色,利用正则表达式匹配任务名为web开头的任务。
https://i-blog.csdnimg.cn/blog_migrate/622a79b913ba812d77789b899ec4d0d5.png
6.给用户分配角色,系统管理-》Manage and Assign Roles-》Assign Roles
此处给用户张三、李四分配的view角色,登录进来后看不到删除、编辑、添加相关的菜单。
https://i-blog.csdnimg.cn/blog_migrate/9246cfde132f6ab4323f99009f0579cf.png
https://i-blog.csdnimg.cn/blog_migrate/81ed742f0768037148de5bd563e2fc02.png
在item roles给张三、李四勾上可以操作的任务
https://i-blog.csdnimg.cn/blog_migrate/623f67edb462dca2ea9315b68454b697.png
此时用户张三、李四登录可以看到分配的任务,利用正则标识式匹配的任务列表
https://i-blog.csdnimg.cn/blog_migrate/366c2a9eddd70c2458084b4efb45fe62.png
而我们系统中是有两个任务的,下面的图是管理员看到的结果。
https://i-blog.csdnimg.cn/blog_migrate/059836ea3dcbb5ed163a28413e71ca69.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]