如何在管道中使用 Rich Text Publisher 插件
How to use the Rich Text Publisher plugin in a pipeline
我正在尝试在我的管道中显示 HTML 报告。
为此,我打算重用我过去使用过的 Rich Text Publisher 插件,用于“正常”作业或矩阵作业,但我无法成功:)
这是我当前的管道:
pipeline{
agent { label 'master' }
options {
disableConcurrentBuilds()
}
stages {
stage('Workspace initialization'){
steps{
deleteDir()
cleanWs()
}
}
stage('main stage') {
matrix {
agent any
axes {
axis {
name 'PRODUCT'
values 'product_A', 'product_B'
}
}
stages {
stage('Quality') {
steps {
catchError(buildResult:'UNSTABLE', stageResult:'FAILURE') {
echo "Quality analysis for ${PRODUCT}"
sh 'mkdir -p artifacts/${PRODUCT}; echo "<h2>HTML report for ${PRODUCT}</h2>" > artifacts/${PRODUCT}/summary.html'
}
rtp {
stableText """<html><head><title>Report</title></head> <body>plop</body></html>"""
unstableAsStable true
failedAsStable true
parserName 'HTML'
abortedAsStable true
}
}
}
}
}
}
}
post {
always {
archiveArtifacts artifacts: 'artifacts/**/*'
}
}
}
管道失败并出现以下错误:
Also: java.lang.IllegalArgumentException: Expected named arguments but got org.jenkinsci.plugins.workflow.cps.CpsClosure2@926e420
java.lang.IllegalArgumentException: Expected named arguments but got org.jenkinsci.plugins.workflow.cps.CpsClosure2@4251545f
at org.jenkinsci.plugins.workflow.cps.DSL.singleParam(DSL.java:718)
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:706)
...
所以我的问题是:如何在管道上下文中使用富文本发布者插件?
还有一个更一般的奖励,如何从插件的文档(例如,the rich text publisher plugin documentation)中推断出这些信息。
提前致谢。
根据文档和错误消息,rtp
方法需要命名参数。根据代码和您的错误消息,您传递的是 Closure[String]
类型的单个参数。您可以通过将参数转换为命名参数来符合正确的用法,如下所示:
rtp(
stableText: '<html><head><title>Report</title></head> <body>plop</body></html>'
unstableAsStable: true
failedAsStable: true
parserName: 'HTML'
abortedAsStable: true
)
这将修复您的错误。
我正在尝试在我的管道中显示 HTML 报告。 为此,我打算重用我过去使用过的 Rich Text Publisher 插件,用于“正常”作业或矩阵作业,但我无法成功:)
这是我当前的管道:
pipeline{
agent { label 'master' }
options {
disableConcurrentBuilds()
}
stages {
stage('Workspace initialization'){
steps{
deleteDir()
cleanWs()
}
}
stage('main stage') {
matrix {
agent any
axes {
axis {
name 'PRODUCT'
values 'product_A', 'product_B'
}
}
stages {
stage('Quality') {
steps {
catchError(buildResult:'UNSTABLE', stageResult:'FAILURE') {
echo "Quality analysis for ${PRODUCT}"
sh 'mkdir -p artifacts/${PRODUCT}; echo "<h2>HTML report for ${PRODUCT}</h2>" > artifacts/${PRODUCT}/summary.html'
}
rtp {
stableText """<html><head><title>Report</title></head> <body>plop</body></html>"""
unstableAsStable true
failedAsStable true
parserName 'HTML'
abortedAsStable true
}
}
}
}
}
}
}
post {
always {
archiveArtifacts artifacts: 'artifacts/**/*'
}
}
}
管道失败并出现以下错误:
Also: java.lang.IllegalArgumentException: Expected named arguments but got org.jenkinsci.plugins.workflow.cps.CpsClosure2@926e420
java.lang.IllegalArgumentException: Expected named arguments but got org.jenkinsci.plugins.workflow.cps.CpsClosure2@4251545f
at org.jenkinsci.plugins.workflow.cps.DSL.singleParam(DSL.java:718)
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:706)
...
所以我的问题是:如何在管道上下文中使用富文本发布者插件?
还有一个更一般的奖励,如何从插件的文档(例如,the rich text publisher plugin documentation)中推断出这些信息。
提前致谢。
根据文档和错误消息,rtp
方法需要命名参数。根据代码和您的错误消息,您传递的是 Closure[String]
类型的单个参数。您可以通过将参数转换为命名参数来符合正确的用法,如下所示:
rtp(
stableText: '<html><head><title>Report</title></head> <body>plop</body></html>'
unstableAsStable: true
failedAsStable: true
parserName: 'HTML'
abortedAsStable: true
)
这将修复您的错误。