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

如何在Jenkins另一作业构建步骤中读取其他作业生成的文件内容到变量

实现方法

方法一:通过Shell命令(curl/wget)直接拉取

在目标Jenkins作业的构建步骤中添加Shell执行步骤,用curl或wget拉取文件内容并存储到环境变量中:

基础用法(无需认证)

# 拉取文件内容并存入变量
VSTORE_CONTENT=$(curl -s "https://<jenkinsurl>/<folder>/job/<nameofjob>/lastSuccessfulBuild/ws/vstore.txt")

# 可选:打印变量内容验证
echo "获取到的vstore内容:$VSTORE_CONTENT"

带Jenkins认证的用法

如果你的Jenkins开启了权限控制,需要添加用户名和API令牌进行认证:

# 替换为你的Jenkins用户名和API令牌
USERNAME="your_jenkins_username"
API_TOKEN="your_jenkins_api_token"

VSTORE_CONTENT=$(curl -s --user "${USERNAME}:${API_TOKEN}" "https://<jenkinsurl>/<folder>/job/<nameofjob>/lastSuccessfulBuild/ws/vstore.txt")

注意:建议使用lastSuccessfulBuild替代直接的ws路径,确保拉取的是源作业最近一次成功构建生成的文件,避免获取到失败构建的无效内容。

方法二:Jenkins Pipeline(流水线作业)

如果目标作业是Pipeline类型,可在流水线脚本中通过sh步骤执行拉取逻辑,并将内容存入流水线变量:

pipeline {
    agent any
    stages {
        stage('获取vstore.txt内容') {
            steps {
                script {
                    // 拉取文件内容(带认证的话添加--user参数)
                    def vstoreContent = sh(
                        script: 'curl -s "https://<jenkinsurl>/<folder>/job/<nameofjob>/lastSuccessfulBuild/ws/vstore.txt"',
                        returnStdout: true
                    ).trim()
                    
                    // 将内容存入环境变量,供后续步骤使用
                    env.VSTORE_CONTENT = vstoreContent
                    echo "已获取vstore内容:${vstoreContent}"
                }
            }
        }
        // 后续可添加使用该变量的步骤
        stage('使用vstore内容') {
            steps {
                echo "使用变量:${env.VSTORE_CONTENT}"
            }
        }
    }
}

关键注意事项

  • 权限配置:确保执行拉取操作的Jenkins用户(或构建代理的运行用户)拥有源作业的Read权限,否则会返回403错误。
  • API令牌获取:Jenkins的API令牌可在用户设置页面(https://<jenkinsurl>/user/<username>/configure)中生成。
  • 文件路径正确性:确认源作业的vstore.txt确实生成在工作区根目录,若路径有嵌套,需调整URL中的路径部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:24