本篇讲的是jenkins在gitlab拉取到java源码之后通过集成maven去自动打包,最后部署到项目中。
流程大致如图:
接下来是操作:
先部署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项目,如图:
配置选项,如图:(这里我只截重点)
脚本示例:(按照自己情况进行更改即可)
#!/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