Email 在管道中使用多个脚本块时Robot framework的电子邮件模板出错
我在Windows 10中使用Jenkins,管道脚本运行机器人脚本,然后发送一封包含结果的电子邮件。 我使用的模板是 我曾尝试在Jenkins文件中使用不同的设置(包括使用脚本版本),但基本上这是可行的:Email 在管道中使用多个脚本块时Robot framework的电子邮件模板出错,email,templates,robotframework,pipeline,Email,Templates,Robotframework,Pipeline,我在Windows 10中使用Jenkins,管道脚本运行机器人脚本,然后发送一封包含结果的电子邮件。 我使用的模板是 我曾尝试在Jenkins文件中使用不同的设置(包括使用脚本版本),但基本上这是可行的: pipeline { agent any stages { stage('Build') { steps { script{
pipeline {
agent any
stages {
stage('Build') {
steps {
script{
bat "robot -v store:${storeID} -v testType:${testType} -v site:${pageID} -v productName: previews.robot"
}
}
}
}
post {
always{
script{
step(
[
$class : 'RobotPublisher',
outputPath : '.',
outputFileName : 'output.xml',
reportFileName : 'report.html',
logFileName : 'log.html',
disableArchiveOutput: false,
passThreshold : 50,
unstableThreshold : 40,
otherFiles : "*.png",
]
)
def emailBody = '''${SCRIPT, template="robot.template"}'''
emailext body: emailBody,
subject: "[JENKINS BUILD]",
recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
}
archiveArtifacts '*.html, *.xml, *.png'
}
}
}
但是,如果我添加另一个带有脚本的阶段,例如更改构建名称,那么我将得到一个模板错误。
生成错误的管道:
pipeline {
agent any
stages {
stage('Init'){
steps{
script{
def name = ""
switch(testType){
case "newProduct":
def tmpProduct = pageID.split("/")
productName = tmpProduct[tmpProduct.size()-1]
name= storeID+": New Product ("+productName+")"
break
case "newHomepage":
name = storeID+": New Homepage"
break
case "newBlog":
name = storeID+": New Blog Post"
break
case "cosmetics":
name = storeID+": UI Changes"
break
default:
name = "Test type empty"
break
}
currentBuild.displayName = name
}
}
}
stage('Build') {
steps {
script{
bat "robot -v store:${storeID} -v testType:${testType} -v site:${pageID} -v productName: previews.robot"
}
}
}
}
post {
always{
script{
step(
[
$class : 'RobotPublisher',
outputPath : '.',
outputFileName : 'output.xml',
reportFileName : 'report.html',
logFileName : 'log.html',
disableArchiveOutput: false,
passThreshold : 50,
unstableThreshold : 40,
otherFiles : "*.png",
]
)
def emailBody = '''${SCRIPT, template="robot.template"}'''
emailext body: emailBody,
subject: "[JENKINS BUILD]",
recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
}
archiveArtifacts '*.html, *.xml, *.png'
}
}
}
生成的名称已正确更改,脚本运行到最后没有问题,但在电子邮件和控制台输出中,我可以看到模板错误:
Exception raised during template rendering: Cannot get property 'simpleName' on null object
java.lang.NullPointerException: Cannot get property 'simpleName' on null object
有什么建议吗?我真的很想让管道更丰富,但如果我不能解决这个问题,我会继续使用基本管道