【问题解决】Jenkins使用File的exists()方法判断文件存在,一直提示不存在的问题

小剧场

最近为了给项目组提供一个能给Java程序替换前端、后端的增量的流水线,继续写上了声明式流水线。

替换增量是根据JSON配置文件去增量目录里去取再替换到对应位置的,替换前需要判断增量文件是否存在。

判断文件是否存在?作为一个老Javaer那还不简单,随手就敲上了Groovy语法的代码:

groovy 复制代码
def filePath = "/path/to/path/myFile"
if(new File(filePath).exists()){
    println '增量存在'
}else{
    println '增量不存在'
}

然后在本地环境的Jenkins(单主节点)运行一直没问题,然后脚本代码提交到后,再使用公司的Jenkins去运行代码。

发现无论文件是否存在,它都会提示"增量不存在"!

我还尝试在if判断前列出文件,代码变成了:

groovy 复制代码
def filePath = "/path/to/path/myFile"
sh "ls -l ${filePath}"
if(new File(filePath).exists()){
    println '增量存在'
}else{
    println '增量不存在'
}

然后更神奇的现象出现了:ls -l的确列出了文件,然后输出"增量不存在"!

问问deepseek

解决

通过AI工具的分析,发现了个隐藏的知识:new File()会在Jenkins主节点执行!要想判断文件存在,使用fileExists方法更靠谱!

我这边正好不涉及agent节点非Linux的情况,问题一下子就确认了。好家伙,困扰我1个小时的问题竟然就这么轻松的解决了。

代码改写如下:

groovy 复制代码
def filePath = "/path/to/path/myFile"
if(fileExists(filePath)){
    println '增量存在'
}else{
    println '增量不存在'
}

AI工具的的确确能提升开发效率,真不错!

相关推荐
iFulling1 天前
【云原生】CentOS安装Kubernetes+Jenkins
linux·云原生·kubernetes·centos·jenkins
程序员杰哥1 天前
Jmeter+Jenkins接口压力测试持续集成
自动化测试·软件测试·python·测试工具·jmeter·jenkins·压力测试
wjm05191 天前
jenkins使用publishover ssh 进行远程连接
运维·ssh·jenkins
tianyuanwo1 天前
技术总结:AArch64架构下Jenkins Agent(RPM容器编译节点)掉线问题分析与排查
java·linux·jenkins
GGGGGGGGGGGGGG.2 天前
CI/CD 全链路实践:从 Git 基础到 Jenkins + GitLab 企业级部署
运维·git·ci/cd·云原生·gitlab·jenkins
007php0072 天前
使用 Docker、Jenkins、Harbor 和 GitLab 构建 CI/CD 流水线
数据库·ci/cd·docker·容器·golang·gitlab·jenkins
007php0072 天前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins
遇见火星2 天前
如何在 Jenkins 中安装 Master 和 Slave 节点以优化 CI/CD 流程
servlet·ci/cd·jenkins
lkf197112 天前
centos安装jenkins
linux·centos·jenkins
Hello.Reader3 天前
在 Ruby 客户端里用 ES|QL
elasticsearch·jenkins·ruby