我在管道中添加了新的阶段:
stage('reports') {
steps {
script {
allure([
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
results: [[path: 'target/allure-results']]
])
}
}
}
但是作业失败,并显示错误:
hudson.remoting.ProxyException: org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
at org.jenkinsci.plugins.workflow.steps.StepDescriptor.checkContextAvailability(StepDescriptor.java:260)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:262)
Caused: hudson.remoting.ProxyException: org.codehaus.groovy.runtime.InvokerInvocationException: org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
测试是在生成的Python和xml报告上编写的,但不是诱人的报告。
您能帮我解决错误吗?
答案 0 :(得分:0)
如我所见,您使用declarative pipeline syntax。在这种情况下,您需要定义agent
部分。根据官方文档:
在管道的顶层定义
agent none
可确保不会不必要地分配执行程序。使用agent none
还会强制每个stage
部分包含其自己的agent
部分。
因此,我认为您在管道的顶级使用agent none
,这就是为什么您需要在舞台内添加agent
部分的原因。像这样:
pipeline {
agent none
stages {
stage('reports') {
agent { docker 'openjdk:8-jre' }
steps {
script {
allure([
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
results: [[path: 'target/allure-results']]
])
}
}
}
}
}
对于scripted pipeline,您需要使用以下语法(有关更多详细信息,请参见魅力documentation):
node {
// script body
allure([
includeProperties: false,
jdk: '',
properties: [[key: 'allure.issues.tracker.pattern', value: 'http://tracker.company.com/%s']],
reportBuildPolicy: 'ALWAYS',
results: [[path: 'target/allure-results'], [path: 'other_target/allure-results']]
])
}