无法从
catchError
块外部访问buildResults
变量。知道我该怎么访问它吗?build job
可能会被中止,所以我希望脚本块的其余部分继续,但我得到了错误groovy.lang.MissingPropertyException: No such property: buildResults for class: groovy.lang.Binding
catchError {
buildResults = build job: 'Test', parameters: [string(name: 'BRANCH', value:'main')], wait: true
}
sh """ curl -u 123:123 -X POST
-H "Content-Type: application/json"
--url 'http://10.10.10.10:8080/rest/api/2/issue/${env.TASK_KEY}/comment'
-d '{ "body": "[Test] Full Pipeline result is: ${buildResults.getResult()}"}'
"""
如果您的下游作业将被中止,构建函数将抛出异常,这意味着buildResults
参数将不会被设置,并且您将得到MissingPropertyException
错误
要克服此问题,您可以在调用build
函数之前,使用默认值定义buildResults
参数,这将使其在不执行构建函数的情况下可用:
def buildResults = ''
catchError {
buildResults = build job: 'Test', parameters: [string(name: 'BRANCH', value:'main')], wait: true
}
此外,您还必须更新生成结果的使用情况,因为如果下游中止,生成结果可能不包含结果对象,在这种情况下,buildResults.getResult()
将失败
您可以使用类似的方法来解决它:
def buildResults = ''
catchError {
buildResults = build job: 'Test', parameters: [string(name: 'BRANCH', value:'main')], wait: true
}
def results = buildResults ? buildResults.getResult() : "Downstream job did not return results"
sh """curl -u 123:123 -X POST
-H "Content-Type: application/json"
--url 'http://10.10.10.10:8080/rest/api/2/issue/${env.TASK_KEY}/comment'
-d '{ "body": "[Test] Full Pipeline result is: ${results}"}'
"""