Jenkins插件安装
Git ( 使用Git访问远程仓库 )
GitLab ( 用于推送构建结果给 GitLab )
Publish Over SSH ( 使用 SSH 的方式远程连接服务器,并进行文件的传输和命令执行 )
GitLab创建访问令牌(Jenkins创建凭证时用到)
创建好了请保存到本地,下次访问时将不再显示:9Km5X3sS4-xN7hjtd_or
Jenkins创建凭证
Jenkins连接GitLab
Jenkins配置SSH服务器(运行Java服务)
Jenkins创建任务
- General
- 源码管理
- 构建触发器
- 构建环境
- 构建
# windows下新建 run.sh 启动脚本
# 在执行shell脚本的时候会出现‘$’\r’: 未找到命令’错误。绝大多数情况下是因为在window系统中写的shell脚本然后上传到服务器执行造成的
# yum install dos2unix
# dos2unix run.sh
# sh run.sh
#
#!/bin/sh
#
# 全局变量
serverRootPath="/usr/local/server"
serverBackRootPath="/usr/local/server/back"
serverName="JavaForGitRunner"
demo1TargetPath="$serverRootPath/$serverName/Demo1/target"
demo1ResultName=""
demo2TargetPath="$serverRootPath/$serverName/Demo2/target"
demo2ResultName=""
#
echo "重新编译Class文件"
cd $serverRootPath/$serverName && mvn clean package
echo ""
#
echo "获取Demo1服务的jar名称并备份"
for file in `ls -a $demo1TargetPath`
do
if [ "${file##*.}"x = "jar"x ] || [ "${file##*.}"x = "war"x ];then
#echo $file
demo1ResultName=$file
# 备份Demo1服务的jar
cp -rf $serverRootPath/$serverName/Demo1/target/$demo1ResultName $serverBackRootPath
echo "Demo1服务的jar备份成功"
echo ""
break
fi
done
#
echo "获取Demo2服务的jar名称并备份"
for file in `ls -a $demo2TargetPath`
do
if [ "${file##*.}"x = "jar"x ] || [ "${file##*.}"x = "war"x ];then
#echo $file
demo2ResultName=$file
# 备份Demo2服务的jar
cp -rf $serverRootPath/$serverName/Demo2/target/$demo2ResultName $serverBackRootPath
echo "Demo2服务的jar备份成功"
echo ""
break
fi
done
#
ps -aux | grep Demo1 | grep -v grep | awk '{print $2}' | while read pid; do kill -9 $pid; done
echo "Demo1进程已关闭"
rm -rf $serverRootPath/Demo1.jar
echo "Demo1.jar已删除"
echo ""
ps -aux | grep Demo2 | grep -v grep | awk '{print $2}' | while read pid; do kill -9 $pid; done
echo "Demo2进程已关闭"
rm -rf $serverRootPath/Demo2.jar
echo "Demo2.jar已删除"
echo ""
#
echo "启动Demo1服务...."
cp -rf $serverBackRootPath/$demo1ResultName $serverRootPath/Demo1.jar
nohup java -jar $serverRootPath/Demo1.jar >/dev/null 2>&1 &
echo "启动Demo1服务成功"
echo ""
#
echo "启动Demo2服务...."
cp -rf $serverBackRootPath/$demo2ResultName $serverRootPath/Demo2.jar
nohup java -jar $serverRootPath/Demo2.jar >/dev/null 2>&1 &
echo "启动Demo2服务成功"
# Exec command执行脚本
# 使环境变量生效
source /etc/profile
echo "构建开始"
cd /usr/local/server && sh run.sh
echo "构建结束"
GitLab配置Webhooks