1.安装jenkins
2.安装插件
3.配置jenkins maven项目发布流程
4.发布测试
1.安装,我们选择用docker版的(选用jenkinsci/blueocean)
docker search jenkinsci/blueocean
image.png
1.1 下载成功后启动,指定8080端口.
docker run -d -p 8081 --name jenkins docker.io/jenkinsci/blueocean
2.1 安装git、maven、jdk等工具插件
image.png
image.png
image.png
如果需要安装其他插件继续安装
2.2 安装插件
image.png
image.png
3.1 配置maven项目
image.png
image.png
image.png
image.png
image.png
效果图如下:
image.png
3.2 脚本截图
注意因为我们是docker启动的,所以脚本要放在docker里面
进入docker容器
脚本上部分
脚本下部分
脚本的主要内容是:
1.创建目录,分别是1./data(跟目录) 2./data/application/项目目录(存放项目jar的目录) 3./data/application_backup/项目目录 (存放备份项目jar的目录) 4./data/logs/项目目录 (存放日志记录的文件夹)
2.发布的时候先编译代码,然后备份jar包,关闭进程
3.发布项目
效果如图:
image.png
image.png
脚本:
#!/bin/bash
# server username
username=root
# server ip
ip=106.12.94.9
#jenkins workspace address
jenkinsWorkspace=/var/jenkins_home/workspace
# ssh address
sshPath="ssh $username@$ip"
# directory name and address
dataPath="/data"
applicationPath="$dataPath/application"
logsPath="$dataPath/logs"
bakPath="$dataPath/application_backup"
# the remote create directory
createDirectory(){
if $sshPath test ! -e $1 ;
then
echo "mkdir $1"
$sshPath "mkdir $1"
fi
}
# Initializes the directory structure
init(){
createDirectory $dataPath
createDirectory $applicationPath
createDirectory $logsPath
createDirectory $bakPath
}
# backup project
backUpProject(){
createDirectory $applicationPath/$1
if $sshPath test -e $applicationPath/$1/$newName;
then
echo "del and backup $1"
createDirectory $bakPath/$1
local backupName=$1_$(date +"%Y-%m-%d_%H-%M-%S")
$sshPath "mv $applicationPath/$1/$newName $bakPath/$1/$backupName.jar"
$sshPath "rm -rf $applicationPath/$1/$newName"
fi;
}
# send project to remote server
sendProjectToServer(){
# $1 = project name
cd $jenkinsWorkspace/$1/target
local name=$(ls | grep .jar$)
local newName=$1.jar
mv $name $newName
backUpProject $1
scp $jenkinsWorkspace/$1/target/$newName $username@$ip:$applicationPath/$1/
}
killProject(){
local pid=$($sshPath "ps -ef | grep $1.jar | grep -v grep | awk '{ print \$2 }'")
$sshPath "kill $pid"
}
start(){
createDirectory $logsPath/$1
local logsName="$1_$(date +'%Y-%m').log"
$sshPath "nohup java -jar $applicationPath/$1/$1.jar 2>&1 >> $logsPath/$1/$logsName &" &
}
init
killProject $1
sendProjectToServer $1
start $1