20、Jenkins部署Java应用
1、将我们的项目上传到Git仓库
这里使用Gitee
为例
2、服务器安装Git
sh
yum install -y git
yum update -y nss curl libcurl
3、Jenkins安装Maven插件
Maven Integration
4、配置全局工具JDK
sh
# 获取java环境安装地址
echo $JAVA_HOME
5、配置Maven
上传maven包到服务器
sh
[root@xx-blog maven]# ls
apache-maven-3.9.11-bin.tar.gz
[root@xx-blog maven]#
sh
# 解压
tar -zxvf apache-maven-3.9.11-bin.tar.gz
如果选择的自动安装,目录为
sh
/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/
默认下载的jar包放在 /var/lib/jenkins/.m2/repository/
6、新建构建任务
7、拉取代码
8、构建一次
9、配置Maven镜像加速
xml
<?xml version="1.0" encoding="utf-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>${user.home}/.m2</localRepository>
用户目录下的.m2是所有jar包的地方; maven容器内jar包的位置
-->
<!--<localRepository>/var/jenkins_home/appconfig/maven/.m2</localRepository>-->
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers></servers>
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
</settings>
10、启动Java应用
通过日志可以看出打包生成的jar
包在/var/lib/jenkins/workspace/xx-springboot/target/xx-springboot-1.0-SNAPSHOT.jar
目录下
将以下脚本放入
sh
#!/bin/bash
#服务名称
SERVER_NAME=xx-springboot-1.0-SNAPSHOT
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行
JAR_NAME=xx-springboot
# 源jar路径
#/usr/local/jenkins_home/workspace--->jenkins 工作目录
#demo 项目目录
#target 打包生成jar包的目录
JAR_PATH=/var/lib/jenkins/workspace/xx-springboot/target
# 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/opt/xx-springboot
echo "查询进程id-->$JAR_NAME"
PID=`ps -ef | grep "$JAR_NAME" | grep -v color=auto | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id"
done
echo "结束进程完成"
#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$SERVER_NAME.jar $JAR_WORK_PATH/$JAR_NAME.jar"
cp $JAR_PATH/$SERVER_NAME.jar $JAR_WORK_PATH/$JAR_NAME.jar
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar > $JAR_WORK_PATH/stdout.log 2>&1 &
sh
tail -f $JAR_WORK_PATH/stdout.log
如果cp没权限
shsudo chown -R jenkins:jenkins /opt/xx-springboot
BUILD_ID=dontKillMe
:这是一个环境变量设置。它设置了一个名为BUILD_ID
的环境变量的值为dontKillMe
。这个环境变量通常用于告诉操作系统不要终止后台进程。这对于长时间运行的进程非常有用,以避免在终端会话结束时被终止。
11、修改接口
java
@RestController
//@CrossOrigin
public class TestController {
// http://127.0.0.1:8001/test
@RequestMapping("/test")
public String test() {
return "hello v1";
}
}