如何在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
相关产品推荐
相关产品推荐

