准备工作:linux服务器本人在阿里云购买的alilinux。jenkins。简单的jar可启动即可。本人maven版本为:apache-maven-3.6.3,jdk使用1.8的即可
Jenkins下载地址:https://jenkins.io/zh/download/
本人使用的是jenkins-2.174-1.1版本
1:Jenkins
- 下载好RPM包后传入到Linux中 这里使用的是rz -e 上传
- 通过 “rpm -ivh Jenkins的rpm包名” 命令进行rpm包的安装
- 默认安装路径,自动安装完成之后:
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件 - 修改配置文件,添加JDK路径
如果不修改配置文件,添加jdk路径,service jenkins start 会报错。
" vi /etc/init.d/jenkins " 编辑Jenkins配置文件,添加jdk的Java路径,如下图:
- 配置完成,再次启动Jenkins Jenkins默认端口为8080 可使用如下命令修改默认端口:
“java -jar jenkins.war --ajp13Port=-1 --httpPort=8088”
2:JAR
简单的一个可启动jar即可。
注意!!! 如果命名为Main需要在pom中声明主入口
<build>
<finalName>smartlogc</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.smartlogc.web.Main</mainClass>
<!--spring-boot-maven-plugin插件打包出来的jar不可以互相依赖 加入以下配置即可实现互相依赖-->
<classifier>exec</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3:Jenkins启动后配置
进入到Jenkins的网页中,默认端口:8080
进入后下载默认的插件即可。
- 构建Maven项目
- 进入到项目的配置
这里使用的是git给定git地址即可,可选是否需要保留旧的构建。如果需要保留勾选即可。 - 设置git
添加一个用户此处的用户为git的用户名密码,用于拉取git项目。给定git地址。如果有别的分支使用别的分支即可。 - 重点!!build项目以及启动
这里给上父pom即可如果是多个“,”隔开即可
clean package -Dmaven.test.skip=true install
clean项目后进行package
因为项目和Jenkins在同一台服务器并没有使用到ssh这里直接在post steps里面执行sh。
注意这里的为本人服务器地址,大家给上自己服务器的Jar地址即可。
#!/bin/sh -l
mv -f $WORKSPACE/smartlogc-web/target/smartlogc-exec.jar /usr/local/webserver/jar/SmartLogc.jar
rm -rf $WORKSPACE/*
bash /usr/local/webserver/startSmartLogc.sh #这里是本人sh文件目录 在下方给出sh设置
startSmartLogc.sh 如下:
#jar包文件路径及名称(目录按照各自配置)
APP_NAME=/usr/local/webserver/jar/SmartLogc.jar
#日志文件路径及名称(目录按照各自配置)
LOG_FILE=/usr/local/webserver/logs/SmartLogc.log
#查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 2
#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME
then
echo '文件存在,开始启动此程序...'
# 需声明不要杀自己以及子进程 否则jenkis会在sh后杀掉所有进程
BUILD_ID=dontKillMe
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar $APP_NAME > $LOG_FILE 2>&1 &
#实时查看启动日志(此处正在想办法启动成功后退出)
#tail -f $LOG_FILE
#输出启动成功(上面的查看日志没有退出,所以执行不了,可以去掉)
echo $APP_NAME'启动成功...'
else
这里注意BUILD_ID=dotKillMe 非常重要 如若不加上 则jar永远启动不成功 Jenkins在最后会杀掉所有的进程以及子进程
文章到这里结束啦。希望对你有帮助~