使用 Jacoco 插件时 Jenkins 管道中的空指针异常
Null pointer exception in Jenkins pipeline when Jacoco plugin is used
当我使用 Jacoco 插件时,Jenkins 管道出现空指针异常错误。如果我从 Jenkinsfile 中注释掉 Jacoco 步骤,则不会抛出任何错误。
Jenkins 中的日志文件表明错误是在管道结束后抛出的。
下面是日志消息和 Jenkins 文件的详细信息。知道为什么会抛出这个错误吗?
[Pipeline] // node
[Pipeline] End of Pipeline
java.lang.NullPointerException
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:87)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:70)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start[=10=](SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
詹金斯文件....
pipeline{
agent any
stages{
stage('Git clone project'){
steps{
git branch: 'sandbox',url:'https://<repo url>'
sh 'git branch -a'
}
}
stage('Test TMS'){
steps{
dir('TestManagementService'){
sh 'pwd'
sh './gradlew test'
step(
jacoco(
execPattern: '**/build/jacoco/**.exec',
classPattern: '**/build/classes/java/main',
sourcePattern: '**/src',
inclusionPattern: 'com/testMgmt/**',
)
)
}
}
post{
always{
junit '**/build/test-results/test/TEST-*.xml'
}
}
}
}// end of stages
}
问题是由于错误使用了包含 jacoco() 语句的 step() 语句。
用法不正确....
step(
jacoco(
execPattern: '**/build/jacoco/**.exec',
classPattern: '**/build/classes/java/main',
sourcePattern: '**/src',
inclusionPattern: 'com/testMgmt/**',
)
)
正确用法(step() 不应该包含 jacoco() )....
jacoco(
execPattern: '**/build/jacoco/**.exec',
classPattern: '**/build/classes/java/main',
sourcePattern: '**/src',
inclusionPattern: 'com/testMgmt/**',
)
当我使用 Jacoco 插件时,Jenkins 管道出现空指针异常错误。如果我从 Jenkinsfile 中注释掉 Jacoco 步骤,则不会抛出任何错误。 Jenkins 中的日志文件表明错误是在管道结束后抛出的。 下面是日志消息和 Jenkins 文件的详细信息。知道为什么会抛出这个错误吗?
[Pipeline] // node
[Pipeline] End of Pipeline
java.lang.NullPointerException
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:87)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:70)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start[=10=](SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
詹金斯文件....
pipeline{
agent any
stages{
stage('Git clone project'){
steps{
git branch: 'sandbox',url:'https://<repo url>'
sh 'git branch -a'
}
}
stage('Test TMS'){
steps{
dir('TestManagementService'){
sh 'pwd'
sh './gradlew test'
step(
jacoco(
execPattern: '**/build/jacoco/**.exec',
classPattern: '**/build/classes/java/main',
sourcePattern: '**/src',
inclusionPattern: 'com/testMgmt/**',
)
)
}
}
post{
always{
junit '**/build/test-results/test/TEST-*.xml'
}
}
}
}// end of stages
}
问题是由于错误使用了包含 jacoco() 语句的 step() 语句。
用法不正确....
step(
jacoco(
execPattern: '**/build/jacoco/**.exec',
classPattern: '**/build/classes/java/main',
sourcePattern: '**/src',
inclusionPattern: 'com/testMgmt/**',
)
)
正确用法(step() 不应该包含 jacoco() )....
jacoco(
execPattern: '**/build/jacoco/**.exec',
classPattern: '**/build/classes/java/main',
sourcePattern: '**/src',
inclusionPattern: 'com/testMgmt/**',
)