jenkins发布spring boot项目(附带发布+备份脚本)

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容