You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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构建任务触发了后台服务未自动关闭。
  • 修正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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:05:29