我想发布测试结果作为构建后操作的一部分,仅当阶段-Execute Test
已经运行时,我的意思是如果构建在执行测试阶段之前失败,则跳过发布测试结果作为构建后操作的一部分。
我已将一个标志变量定义为全局变量,并在运行执行测试阶段时将该值操作为True。如果该标志为True,则将发布测试结果函数作为生成后操作的一部分执行,但它将引发以下错误。我做错了什么?谢谢。
WorkflowScript: 51: Expected a stage @ line xxx, column x.
post {
^
修订的管道:
def flag = false
@Field String NEXUS = 'our-nexus-link'
def call(body) {
def pipelineParams = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = pipelineParams
body()
pipeline {
agent {
.....
}
}
stages {
stage ('Git Setup') {
steps {
.....
}
}
stage ('Compile') {
.......
}
stage('Scan') {
.........
}
stage('Execute Test') {
steps {
container('Go') {
function_to_Run_TestCases(parameters)
script { flag = true }
}
}
}
post {
always {
dir(workspace) {
archiveArtifacts artifacts: workspace, allowEmptyArchive: true
}
script {
if (flag == true) {
function_to_PUBLISH_TestCases(testDir: checker_dir)
}
}
}
}
1条答案
按热度按时间nle07wnf1#
您在这里遇到的问题是
post
节应该在stages
节完成之后,而不是在stages
节中。因此,您在post
之前缺少了}
。请考虑文档中的此示例以了解更多信息。另一方面,在“Execute Test”阶段使用
post
可能会更好地完成您试图实现的目标,如下所示:这样,您就不需要单独的标志,因为如果“Execute Test”阶段失败,
function_to_PUBLISH_TestCases
将不会运行。