本篇讲的是jenkins在gitlab拉取到java源码之后通过集成maven去自动打包,最后部署到项目中。
流程大致如图:
微信图片_20200513172944.png

接下来是操作:

先部署jdk环境(在部署jenkins的时候理应jdk也安装了,这里带一嘴)

[root@localname ~]# yum list | grep openjdk
java-1.8.0-openjdk.i686

[root@localname ~]# yum -y install java-1.8.0-openjdk.i686

# 然后是配置系统环境
[root@localname ~]# vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.${JRE_HOME}/lib
export PATH=${JAVA_HOME}/jre/bin/:$PATH

# 安装maven,这里是直接yum安装,不习惯的可以不按我这装
[root@localname ~]# wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
[root@localname ~]# yum -y install apache-maven

# 打印一下可以看到如下信息
[root@localname ~]# mvn -v
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /usr/share/apache-maven
Java version: 1.8.0_252, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.3.2.el7.x86_64", arch: "amd64", family: "unix"

本机环境已经装好。
接下来是上到jenkins上进行配置maven与jdk。
jenkins上需要部署的插件名:

Maven Release Plug-in  

然后新建一个新的maven项目,如图:
微信图片_20200513174342.png

配置选项,如图:(这里我只截重点)
微信图片_20200513174221.png
微信图片_20200513174737.png

微信图片_20200513174938.png

脚本示例:(按照自己情况进行更改即可)


#!/bin/bash

###这是jenkins自动化部署代码的脚本样板


###变量
DATE=$(date +%Y-%m-%d-%H-%M-%S)
WEB_PATH=/usr/local/test
DIR=/data
DA_VER=${DATE}-${git_version}

# 打包前后jar包名
BOA=boatbed-0.0.1-SNAPSHOT.jar
TC=test.jar

###函数形式存在
###进入到项目目录里,然后打包至指定目录
get_code(){
        cd ${WORKSPACE}/target/ && \      ### workspace , 是属于jenkins自带的变量
        cp ${BOA}  ${DIR}/${DA_VER}.jar
 }


###创建存储目录,并做软连接指向web站点目录
jar_env(){
        su - centos -c "cd /usr/local/test/bin/ && bash stop.sh"
        rm ${WEB_PATH}/${TC}
        cp ${DIR}/${DA_VER}.jar ${WEB_PATH}/${TC}
        chown centos.centos ${WEB_PATH}/${TC}
        su - centos -c "cd /usr/local/test/bin/ && bash start.sh"
}


###回退时的操作
rollback(){
        ROLLBACK_FILE=$(find /data/ -maxdepth 1  -name "*${git_version}*")
        su - centos -c "cd /usr/local/test/bin/ && bash stop.sh"
        rm ${WEB_PATH}/${TC}
        cp ${ROLLBACK_FILE}        ${WEB_PATH}/${TC}
        chown centos.centos ${WEB_PATH}/${TC}
        su - centos -c "cd /usr/local/test/bin/ && bash start.sh"
}

deploy(){
        get_code
        jar_env
}


####判断之前是否有部署过的版本,如果有,就退出,相反则部署;回退不受限.
###GIT_COMMIT是gitlab自带的变量,详情请查看  gitlab可用的环境变量列表
###GIT_PREVIOUS_SUCCESSFUL_COMMIT  同上
if [ $Option == "deploy" ];then
        if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
                echo "你已经部署过该${git_version}版本"
                exit 1
        else
                        deploy
        fi

elif [ $Option == "rollback" ];then
                rollback
fi
Last modification:May 13th, 2020 at 05:53 pm
如果觉得我的文章对你有用,请随意赞赏