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

Jenkinsfile Groovy脚本如何获取Docker容器内bash脚本的buildResults变量

核心原因是Docker容器的文件系统是隔离的,你在容器内部生成的文件会随着容器执行结束销毁,Jenkinsfile中readFile方法默认运行在Jenkins agent所在的宿主机/外部执行环境,自然无法读取到容器内部的文件路径。

方案1:直接捕获shell脚本输出(最推荐,无需处理文件持久化)

直接通过Jenkins sh步骤的returnStdout参数捕获bash脚本的标准输出,不需要通过中转文件传递参数。

  • 第一步修改jenkins.sh,在脚本末尾将汇总好的buildResults输出到标准输出:
[...]
buildResults+=" $appName: Build Failed!"
# 原有写文件逻辑可保留,新增一行输出结果到stdout
echo "$buildResults"

如果脚本执行过程中有其他无关日志,可以将构建日志重定向到stderr避免干扰结果输出,比如./gradlew build >&2。

  • 第二步修改Jenkinsfile逻辑,捕获sh步骤返回值:
script {
    String buildResults = "error receiving build results"
    try {
        // 加returnStdout: true捕获脚本输出,trim去除末尾多余换行
        buildResults = sh script:'''#!/bin/bash
        ./jenkins.sh
        ''', returnStdout: true.trim()
        currentBuild.result = "SUCCESS"
    } catch(e){
        currentBuild.result = "FAILURE"
        buildResults = "Build failed. Error: " + e.toString()
    }
    // 后续直接使用buildResults变量即可
}
方案2:挂载宿主机目录到Docker容器持久化文件

如果你需要保留构建结果文件用于其他用途,可以通过目录挂载的方式把容器内的生成文件同步到宿主机Jenkins工作目录。
在启动Docker容器的命令中添加-v参数挂载目录,示例:

# 将Jenkins当前工作目录$(pwd)挂载到容器内的/build目录
docker run -v $(pwd):/build 你的构建镜像名称 bash -c "./jenkins.sh"

修改jenkins.sh中pathToBuildResults为容器内的挂载路径,比如/build/buildResults.txt,文件会自动同步到宿主机的Jenkins工作目录,之后原有的readFile逻辑直接读取当前目录下的buildResults.txt即可。

方案3:使用Jenkins Docker Pipeline插件在容器内执行读文件操作

如果你使用Jenkins官方的Docker Pipeline插件管理容器生命周期,可以把读文件逻辑也放到容器内部的执行块中:

script {
    String buildResults = "error receiving build results"
    // inside块内的所有步骤都会在对应Docker容器内部执行
    docker.image('你的Android构建镜像名称').inside {
        try {
            sh './jenkins.sh'
            // 此时readFile是在容器内部读取路径,可以正常获取文件内容
            buildResults = readFile('你的buildResults.txt容器内路径').trim()
            currentBuild.result = "SUCCESS"
        } catch(e) {
            currentBuild.result = "FAILURE"
            buildResults = "error receiving build results. Error: " + e.toString()
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:04