Jenkins+SpringBoot持续集成案例

前提工作

1、创建opt目录(所有东西安装在此)

cd /
mkdir /opt  #jdk maven安装目录
mkdir /opt/jar/helloworld  #jar shell脚本目录

2、获取安装包(Jenkins+JDK+Maven+shell脚本)

链接:https://pan.baidu.com/s/1_QYGYHyJteR6WmLHxdrhwQ 
提取码:oove 

2.1安装JDK

cd /opt
#解压
tar -zxvf  jdk-8u131-linux-x64.tar.gz
#修改配置
vim /etc/profile

配置环境变量

#jdk
export JAVA_HOME=/opt/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

 

2.2安装Maven

cd /opt
tar -zxvf  apache-maven-3.6.1-bin.tar.gz
vim /etc/profile

配置环境变量

#maven
export MAVEN_HOME=/opt/apache-maven-3.6.1
export PATH=${PATH}:${MAVEN_HOME}/bin

 

2.3安装Git

sudo apt-get install git # 安装git

git config --global user.name "evio"

git config --global user.email "977905698@qq.com"

二、项目准备

1、gitee创建新仓库

2.创建SpringBoot项目

拉取代码创建Springboot项目

 

Pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hive</groupId>
    <artifactId>helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>helloworld</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <defaultGoal>compile</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--使单元测试不影响项目的编译(需要单元测试的时放开)-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip><!--跳过单元测试-->
                    <!--<testFailureIgnore>true</testFailureIgnore>--><!--这个网上很多的解决方式是这个,其实这个,其实这个配置后打包还是会编译单元测试类的,只是忽略编译单元测试类的错误.-->
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

三、准备脚本(脚本存放目录 cd  /opt/jar/helloworld)

 

3.1.stop.sh

echo "Stopping SpringBoot Application"
pid=`ps -ef | grep  helloworld-0.0.1-SNAPSHOT.jar  | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi

3.1.bak.sh

#备份文件目录
bakfile="/opt/jar/helloworld/helloworld-0.0.1-SNAPSHOT.jar"
#备份1和备份2目录是否存在
if test -e $file1
then
    echo '========================'    
else
    echo '===备份1目录不存在,创建目录==='
        mkdir -p $file1
fi
if test -e $file2
then
    echo '========================'
else
    echo '===备份2目录不存在,创建目录==='
        mkdir -p $file2
fi



#获取备份1和备份2的文件个数
filecount1=`ls $file1 | wc -w`
filecount2=`ls $file2 | wc -w`

#如果备份1文件数小于5  存入备份1
if  [ $filecount1 -lt 5 ]
then
	echo " =====备份1副本个数: $filecount1 ==  备份2副本个数: $filecount2===== "
	echo " =====正写入备份1===== "
	mv   $bakfile  $file1/${bakfile##*/}.`date +%Y%m%d%H%M%S`
	echo " ======备份完毕====== "
fi

#如果备份1等于5  备份2小于5 存入备份2
if  [ $filecount1 -eq 5 -a  $filecount2 -lt 5 ]
then
	echo " =====备份1副本个数: $filecount1 ==  备份2副本个数: $filecount2===== "
	echo " 正写入备份2 "
	 mv    $bakfile  $file2/${bakfile##*/}.`date +%Y%m%d%H%M%S`
	echo "=====备份完毕===== "
fi

#如果备份1等于5  备份2等于5 清空备份2 备份1 存入备份2 清空备份1 存入备份1
if  [ $filecount1 -eq 5 -a  $filecount2 -eq 5 ]
then
	echo " =====备份1副本个数: $filecount1 ==  备份2副本个数: $filecount2===== "
	echo " =====正写入备份1===== "
	#清空备份2
	rm  -rf $file2/*
	echo " =====清空备份2===== "
	#备份1 存入备份2
	mv $file1/*  $file2/
        echo " =====备份1转入备份2===== "
	#清空备份1
	rm -rf $file1/*
	echo " =====清空备份1===== "
	#存入备份1
	echo " =====存入备份1===== "
 	mv   $bakfile  $file1/${bakfile##*/}.`date +%Y%m%d%H%M%S`
	echo " =====备份完毕===== "
fi

3.3.replace.sh

mv /var/lib/jenkins/workspace/helloworld/hive/target/helloworld-0.0.1-SNAPSHOT.jar    /opt/jar/helloworld

四、配置Jenkins

4.1安装Jenkins

sudo rpm -ih jenkins-2.176.2-1.1.noarch.rpm



自动安装完成之后: 

/usr/lib/jenkins/jenkins.war    WAR包 

/etc/sysconfig/jenkins       配置文件

/var/lib/jenkins/        默认的JENKINS_HOME目录

/var/log/jenkins/jenkins.log    Jenkins日志文件

在jenkins配置文件中配置 需要“vi /etc/init.d/jenkins”,把java路径加上,如下:

启动命令

sudo service jenkins start

启动正常,可以访问:http://localhost:8080

指定目录查询登录密码

进入用户自定义插件界面,建议选择安装官方推荐插件,因为安装后自己也得安装:

 

等待一段时间之后,插件安装完成,配置用户名密码:

 4.2配置Jenkins

进入 系统管理-》全局工具配置

1、设置 jdk(前面安装的java,但是显示不在 jenkins 里的错误,所以这里再手动安装)

2、设置 Git

 

3、设置 Maven

4、安装 Maven Integration plugin 插件

 

五、部署项目

1、首页点击新建:输入项目名称

下方选择构建一个maven项目,点击确定。

勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的5个

如果你没有第二个选项,需要安装 Maven Integration plugin 插件

2、勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的5个

3、源码管理,配置Git相关信息

4、构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来

5、在Build中输入打包前的mvn命令,如:

clean install -Dmaven.test.skip=true -Ptest

6、Post Steps 选择 Run only if build succeeds  点击Add post-build step,选择 Excute Shell

 

cd /opt/jar/helloworld/
sh stop.sh
sh bak.sh
sh replace.sh
BUILD_ID=dontKillMe nohup java -jar /opt/jar/helloworld/helloworld-0.0.1-SNAPSHOT.jar &

 

六、构建项目

 

查看日志

 

最终生成目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值