Skip to content

20、Jenkins部署Java应用

1、将我们的项目上传到Git仓库

这里使用Gitee为例

image-20250729145353082

2、服务器安装Git

sh
yum install -y git
yum update -y nss curl libcurl

3、Jenkins安装Maven插件

image-20250729145910376

Maven Integration

image-20250729150009791

image-20250729150031071

4、配置全局工具JDK

image-20250729150157610

sh
# 获取java环境安装地址
echo $JAVA_HOME

image-20250729150254616

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

image-20250729153536825

如果选择的自动安装,目录为

sh
/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/

默认下载的jar包放在 /var/lib/jenkins/.m2/repository/

6、新建构建任务

image-20250729150702019

image-20250729150739206

7、拉取代码

image-20250729150846385

image-20250729151240389

image-20250729151302238

8、构建一次

image-20250729151338156

image-20250729161839182

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>

image-20250729162129935

10、启动Java应用

通过日志可以看出打包生成的jar包在/var/lib/jenkins/workspace/xx-springboot/target/xx-springboot-1.0-SNAPSHOT.jar目录下

将以下脚本放入

image-20250729162341311

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没权限

sh
sudo chown -R jenkins:jenkins /opt/xx-springboot

BUILD_ID=dontKillMe:这是一个环境变量设置。它设置了一个名为BUILD_ID的环境变量的值为dontKillMe。这个环境变量通常用于告诉操作系统不要终止后台进程。这对于长时间运行的进程非常有用,以避免在终端会话结束时被终止。

image-20250729164548535

image-20250729164619364

11、修改接口

java
@RestController
//@CrossOrigin
public class TestController {

    // http://127.0.0.1:8001/test
    @RequestMapping("/test")
    public String test() {
        return "hello v1";
    }

}

12、提交后重新部署

image-20250729165232077