我正在集成Squish自动化工具和Jenkins管道。一切顺利。现在,我需要在完成工作后发送电子邮件报告。我在预发送脚本中有一个Groovy文件,但是当该脚本运行时,它会抛出异常:
java.lang.NullPointerException:无法在空对象上调用方法getRootDir()
我发现Groovy脚本中的“ build”对象为Null。不知道为什么。请注意,如果我在Jenkins上使用内置的Squish插件和可编辑的电子邮件,一切都会顺利进行。当我移至使用管道时,问题便会发生。
@@@-这是我的Groovy脚本:
List getJenkinsTestResultFiles() {
File squishResultsPath = new File( build.getRootDir(), "squishResults" )
if ( !squishResultsPath.exists() || !squishResultsPath.isDirectory() ) {
throw new GroovyRuntimeException( "Squish results path does not exist at: " + squishResultsPath.getAbsolutePath() )
}
File summaryFile = new File( squishResultsPath, "summary.xml" )
if ( !summaryFile.exists() || !summaryFile.isFile() ) {
throw new GroovyRuntimeException( "Squish summary file does not exist at: " + summaryFile.getAbsolutePath() )
}
List resultFiles = []
def summaries = new XmlSlurper().parse( summaryFile )
summaries.summary.each {
resultFiles.push( new File( squishResultsPath, it.xmlFileName.text() ) )
}
return resultFiles
}
@@@-这是我的管道脚本:
node('Slave_10.133.88.151') {
stage('Squish Test') {
step([$class: 'SquishBuilder',
abortBuildOnError: false,
extraOptions: '',
host: '',
port: '',
resultFolder: "${WORKSPACE}\\Squish_Report",
skipTestCases: false,
snoozeFactor: '1',
squishConfig: 'Default',
testCase: '',
testSuite: "${WORKSPACE}\\${TEST_SUITE}"])
}
stage('Send Email') {
emailext body: 'Test',
postsendScript: '${SCRIPT, template="SquishSummary.groovy"}',
subject: 'Pipeline',
to: 'hoang@local.com'
}
}
答案 0 :(得分:0)
构建对象是hudson.model.Build对象,并且由于您正在调用共享库,因此必须在groovy脚本中导入Build对象。
import hudson.model.Build
位于共享库的顶部。
如果您已经导入了对象,则问题可能是您尚未在共享库中初始化它。