如何在Jenkinsfile中提取文本文件内容并赋值给变量
解决方法
你不用先把Git差异写入文件,直接在Jenkins的sh步骤里开启returnStdout: true参数,就能把命令的输出结果直接赋值给变量,具体实现如下:
修改后的Jenkinsfile示例
pipeline { agent { label 'compute-env-spotfleet' } ... stage('Testing') { script { // 直接捕获git diff的输出到变量 def some_variable = sh( script: 'git diff HEAD^ requirements.txt', returnStdout: true ).trim() // 可选:打印变量内容验证结果 echo "Git差异内容:\n${some_variable}" } } }
关键说明
sh(returnStdout: true)会返回命令执行的标准输出字符串,而不是仅在控制台打印结果。- 调用
.trim()是为了去掉输出首尾的换行符和空白字符,避免变量里带不必要的空行。 - 这种方式省去了文件读写的步骤,比原来的写法更简洁高效。
如果确实需要保留requirements_change.txt文件的同时赋值变量,也可以这么写:
script { sh 'git diff HEAD^ requirements.txt > requirements_change.txt' def some_variable = sh(script: 'cat requirements_change.txt', returnStdout: true).trim() }
内容的提问来源于stack exchange,提问作者kahhengchong
相关产品推荐
相关产品推荐

