解决linux jenkins要求JDK版本与项目版本JDK不一致问题

    背景–问题描述: 新入职公司,交接人说jenkins运行有问题,现在都是手动发布,具体原因让我自己看(笑哭)。我人都蒙了,测试环境都手动发布,那不是麻烦的要死!
    接手后,发现是jenkins(版本2.422)要求jdk版本最低11,项目使用的则是1.8。两者没法同时满足,升级jdk是不现实的。后来发现测试环境有两套jdk,一套JDK1.8,一套JDK17,我想这套jdk17应该就是为了解决jenkins对JDK版本要求的问题的吧!
     尝试处理方式一: 配置Linux JDK运行环境为JDK17,启动jenkins(JDK8无法启动),启动成功。切换配置JDK到1.8,在jenkins中配置项目–>发布,竟然成功了(此种方式不可取)。原因一: 后续在添加项目时无论如何都不能发布成功,摸不着头脑!原因二: 在jenkins配置的shell脚本中,添加一行 echo java -version 结果打印JDK17(大坑!!!!!!),这环境都变了,后面很容易出现大问题。

一、解决方式:

     jenkins是war包(war包也可以java -jar启动呦),启动时指定JDK启动就可以了,发布时,打包命令依赖的当前环境配置的JDK版本。

# 指定使用jdk17版本启动jenkins,环境变量/etc/profile配置的是1.8版本
nohup  /home/java/jdk-17.0.7/bin/java -jar -Xms512M -Xmx2048M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=768M jenkins.war  >  runtime.log  2>&1  &

二、实际遇到问题:

     方式一的jenkins报错问题:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.774 s
[INFO] Finished at: 2024-06-12T09:19:29+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project business-core-redis: 
Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x5ff00507) cannot access class 
com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) 
because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x5ff00507 -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :business-core-redis

编译失败,但是在jenkins拉取项目的位置执行mvn clean package -Dmaven.skip.test=true,确可以正常编译打包。
在jenkins配置的shell中添加一行 echo java -version 结果打印

java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)

由此看来还是JDK版本的问题。

三、配置Webhooks自动发布

上面已经给出处理方式,下面是是记录jenkins配置及git版本管理工具(gogs)配置Webhooks自动发布。
第一步:New Item
在这里插入图片描述
第二步:Enter an item name(创建待发布项目名称)–>选择Freestyle project–> 点击ok
在这里插入图片描述
第三步:添加项目描述,勾选git管理
在这里插入图片描述
第四步:配置git仓库
在这里插入图片描述
第五步:添加shell配置
在这里插入图片描述
第六步:填写shell–>保存
在这里插入图片描述

#!/bin/bash

echo `java -version`
BUILD_ID=DONT_KILL_ME
tell(){
	if [ $? -eq 0 ]
    then
        echo "执行成功"
    else
        echo "执行失败"
    fi
}
echo '正在杀死后台的进程'
kill -9 `ps -ef | grep  business-jyb-system-backend.jar  | grep -v grep | awk '{print $2}'`
tell
echo '开始移除原来项目的jar包'
rm -f /home/rj/development/tongcheng-jyb/business-jyb-system-backend.jar
cd /root/.jenkins/workspace/business-jyb-system-backend-test
echo '开始打包项目'
mvn clean package -Dmaven.skip.test=true
echo '开始复制打包好的jar包到部署目录'
cp -p /root/.jenkins/workspace/business-jyb-system-backend-test/business-system/business-system-service/target/business-jyb-system-backend.jar  /home/rj/development/tongcheng-jyb/business-jyb-system-backend.jar
echo '移动完成'
cd  /home/rj/development/tongcheng-jyb
sh start.sh

第七步:配置gogs自动发布在这里插入图片描述

# Payload URL配置内容,
# 其中链接为jenkins项目访问地址
# job= 后面的内容为 jenkins总配置的项目名(即第二步:Enter an item name)
http://xxxx.xxxx.com/gogs-webhook/?job=business-jyb-system-backend

在这里插入图片描述
保存后,点击当前页面Payload URL 修改–>Test Delivery测试发送请,查看jenkins中是否执行了一次构建项目
在这里插入图片描述
此时大功告成,每当有代码提交就会出发webhook就会被触发调用jenkins发布!!!!!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值