Jenkins自动构建Springboot项目

Jenkins

Jenkins的官网是这么介绍自己的:Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software. 很帅的描述!

Jenkins安装及配置

1.1 官网下载安装LTS版本:https://jenkins.io/zh/download/

1.2 Linux 下安装,可以使用 java -jar xx.war的方式启动,也可以使用脚本的方式启动

#!/bin/bash
pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l`
if [ "$1" = "start" ];then
        if [ $pid -gt 0 ];then
    echo 'jenkins is running...'
    else
    java -jar jenkins.war --httpPort=8081 >/dev/null 2>&1 &
        fi
elif [ "$1" = "stop" ];then
        exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
    echo 'jenkins is stop..'
else
        echo "Please input like this:"./jenkins.sh start" or "./jenkins stop""
fi

使用命令

./jenkins.sh stop
./jenkins.sh start

2.配置

2.1 启动Jenkins

2.2 安装插件

2.3 全局配置

maven/jdk/git/ssh server …

3.自动构建部署SpringBoot项目

  • 3.1访问Jenkins,新建Item
  • 3.2输入Item名,选择构建Maven项目
  • 3.3项目配置
    • 3.3.1源码管理
    • 3.3.2添加访问凭据:点击添加,添加访问认证
    • 3.3.3构建环境:构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来
      1. 3.4Build:在Build中填写Pom位置(多模块,单一模块默认即可),并填写Maven打包命令
    • 3.3.5 Post Steps:选择Run only if build succeeds,打包成功后执行
    • 3.3.6 点击Add post-build step,选择 Send files or execute commands over SSH:构建成功后的操作,通过SSH传输文件,并执行相应脚本或者命令
    • 3.3.7 SSH Publishers配置

启动脚本示例

启动脚本:下面脚本的思路是先杀死已有项目进程,备份旧Jar,获取新Jar包并启动;
网上有很多类似脚本,可以另外搜索。

DATE=$(date +%Y%m%d)
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/usr/local/java/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
DIR=/apps/proj-packages/my-springboot/springboot-admin
JARFILE=springboot-admin.jar

if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
mv $JARFILE backup/$JARFILE$DATE
mv -f /root/.jenkins/workspace/Springboot-Admin/springboot-admin/target/$JARFILE .

java -jar $JARFILE --spring.profiles.active=prod  > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

(完)

发表评论

邮箱地址不会被公开。 必填项已用*标注