我的管道正在基于每个Job执行生成一个动态收件人列表,我试图使用将该列表设置为变量的列表,以便在emailext插件的``收件人''部分中使用,问题是使用mailext部分后,变量的内容将无法解析。
readMe.md
答案 0 :(得分:0)
在执行sh
命令时,无法重用在该命令中设置的变量。您需要执行以下操作:
最重要的是您将管道文件设为全局变量
def recipientsList
然后执行您的shell命令并检索输出
recipientsList = sh (
script: '''for Project in `cat results.txt`
do
grep "mail.com" $JENKINS_HOME/jobs/$Project/config.xml|grep -iv "Ansprechpartner" | awk -F'>' '{print $2}'|awk -F'<' '{print $1}'>> recipientList.txt
done
recipientList2=`sort -u recipientList.txt`
echo $recipientList2
''',
returnStdout: true
).trim()
现在,您可以在电子邮件中使用变量$recipientList
...
为避免混淆,我将您的bash变量重命名为recipientList2
。
编辑:我不知道您想获得什么,但是考虑使用emailext
提供的一些默认收件人:
recipientProviders: [ developers(), culprits(), requestor(), brokenBuildSuspects(), brokenTestsSuspects() ],
答案 1 :(得分:0)
我发现唯一的方法是将脚本部分作为变量添加到post节的一部分,并在Pipeline块之外添加变量Definition:
post {
success {
script {
RECIPIENTLIST = sh(returnStdout: true, script: 'cat recipientListTest.txt')
}
emailext to: "${RECIPIENTLIST}",
from: 'jenkins@mail.com',
attachmentsPattern: 'Projects2Shelve.txt,jobs2Delete.txt',
subject: "MY SUBJECT",
body: "MY BODY"
}