JenkinsFile构建阶段超时求助:构建成功后仍持续运行
Jenkins脚本化流水线Build阶段无法终止问题排查与解决
问题描述
作为Jenkins和脚本化顺序流水线的新手,我设置了“Git checkout”和“Build”两个简单阶段。Git checkout阶段5秒内即可完成,但Build阶段控制台显示50秒就提示“Build Successful”,却持续运行超10分钟无法停止。请问如何让该阶段停止并继续执行流水线脚本?
相关JenkinsFile代码
properties([parameters([choice(choices: ['master'], description: 'Branch to select', name: 'branch')])]) node{ stage('Git checkout'){ echo "Pulling changes ${params.branch}" checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'some-credentials', url: '<my-git-url>']]]) } stage('Build'){ dir('project/cms') { withGradle(){ echo 'Creating build folder' powershell './gradlew clean build' } } } }
解决方法
排查残留进程
登录Jenkins运行节点的机器,执行进程排查命令:- Windows:
Get-Process java - Linux:
ps aux | grep gradle
若发现未结束的Gradle或Java进程,手动终止后观察流水线是否恢复正常。这通常说明Gradle构建任务触发了后台服务未自动关闭。
- Windows:
修正PowerShell执行逻辑
修改powershell命令,确保Jenkins能正确捕获进程结束信号:powershell './gradlew clean build; exit $LASTEXITCODE'或者使用强制等待进程结束的方式:
powershell 'Start-Process -FilePath "./gradlew" -ArgumentList "clean build" -Wait -NoNewWindow'检查Gradle构建脚本
查看项目build.gradle文件,确认是否有插件或任务在build阶段启动了持久化服务(如监控、测试服务)。若存在此类逻辑,需添加任务结束时的停止操作,或调整插件配置避免启动后台进程。添加阶段超时限制
为Build阶段设置超时,防止无限挂起:stage('Build'){ timeout(time: 15, unit: 'MINUTES') { dir('project/cms') { withGradle(){ echo 'Creating build folder' powershell './gradlew clean build; exit $LASTEXITCODE' } } } }超时后Jenkins会自动终止该阶段,流水线可继续执行后续步骤(若有)。
内容的提问来源于stack exchange,提问作者user17704667
相关产品推荐
相关产品推荐

