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

Jenkins技术需求咨询:构建日志文件访问与带人工测试的流水线配置

解决方案:Jenkins工作区日志访问 + 带人工审批的流水线配置

我来帮你搞定这两个Jenkins需求,分两部分给你详细说明:

一、实现构建运行时的工作区文件日志访问权限

要让相关人员在构建运行时能访问工作区里的日志文件,你可以从这几个方向入手:

  • 利用Jenkins原生Workspace访问:Jenkins的每个构建任务页面,默认都会有一个「Workspace」链接(在页面左侧菜单栏),只要给测试/运维人员配置该任务的Job/Read权限,他们就能直接点击进入查看工作区里的所有文件,包括日志文件。
  • 关键日志文件归档:在流水线的构建阶段,用archiveArtifacts步骤把生成的日志文件归档到Jenkins服务器,这样即使构建结束或者工作区被清理,也能从「Artifacts」页面下载查看。示例代码:
    stage("Build") {
        // 构建应用的步骤
        sh './gradlew build'
        // 归档日志文件
        archiveArtifacts artifacts: 'build/logs/**/*.log', fingerprint: true
    }
    
  • 实时输出日志到构建控制台:如果需要在构建日志里直接看到文件内容,可以在流水线里执行读取文件的命令,比如Linux环境用cat,Windows用type:
    stage("Build") {
        sh './gradlew build'
        // 把应用日志输出到构建控制台
        sh 'cat ./build/logs/app.log'
    }
    

二、配置带人工审批(5天超时)的交付流水线

你提到用input步骤实现暂停是完全可行的,我把示例代码完善并加上详细说明,满足「构建归档→暂停等待测试→人工审批后交付/超时可恢复」的需求:

pipeline {
    agent any
    stages {
        stage("Build") {
            steps {
                echo "开始构建应用..."
                // 这里替换成你的实际构建命令,比如maven/gradle/npm构建
                sh './gradlew clean build -x test'
                
                echo "归档构建制品..."
                // 归档构建好的应用制品(比如jar/war包)
                archiveArtifacts artifacts: 'build/libs/*.jar', fingerprint: true
                // 可选:把构建制品上传到制品仓库(如Nexus、Harbor)
                // sh 'curl -X POST -F "file=@build/libs/app.jar" http://your-nexus-url/repository/releases/'
            }
        }
        
        stage("Wait for Test Approval") {
            steps {
                // 用timeout包裹input,设置5天超时时间
                timeout(time: 5, unit: 'DAYS') {
                    input(
                        message: "应用构建已完成,请完成测试后点击批准以启动交付流程",
                        submitter: "test-team", // 指定只有测试组的用户能审批
                        parameters: [
                            string(name: 'TEST_RESULT', defaultValue: 'PASS', description: '请填写测试结果(PASS/FAIL)')
                        ]
                    )
                }
            }
        }
        
        stage("Deliver") {
            steps {
                echo "开始交付已测试的应用..."
                // 这里替换成你的实际交付步骤,比如部署到测试/生产环境
                sh 'ansible-playbook deploy.yml -i inventory/prod'
                echo "应用交付完成!"
            }
        }
    }
    
    // 处理超时或审批失败的情况
    post {
        aborted {
            echo "流水线因超时或审批被拒绝而中止,可重新触发审批步骤恢复"
        }
        success {
            echo "流水线执行成功!"
        }
    }
}

关键说明:

  • timeout设置5天的等待时长,超时后流水线会自动中止,但你可以在Jenkins的构建页面点击「Resume」按钮恢复流水线,继续完成交付步骤。
  • submitter参数可以指定只有特定用户组或用户能进行审批,避免无关人员误操作。
  • 加入了TEST_RESULT参数,让测试人员可以填写测试结果,方便后续追溯。
  • archiveArtifacts确保构建好的制品被保存,即使工作区被清理也能正常交付。

这样配置下来就能完美满足你的两个需求啦!

内容的提问来源于stack exchange,提问作者Igl3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:39