我正在尝试在Jenkinsfile中使用这个看似简单的模式:
def params = input message: 'Define versions to use:', parameters: [
[
$class: 'RunParameterDefinition',
description: '',
filter: 'SUCCESSFUL',
name: 'pr1_run',
projectName: 'MyProject1'
], [
$class: 'RunParameterDefinition',
description: '',
filter: 'SUCCESSFUL',
name: 'pr2_run',
projectName: 'MyProject2'
]
]
// ...
step([
$class: 'CopyArtifact',
fingerprintArtifacts: true,
projectName: 'MyProject1', // resorted to this
selector: [
$class: 'ParameterizedBuildSelector',
parameterName: '${params.pr1_run}'
],
target: _dir
])
使用以上方法,我得到
java.io.NotSerializableException: org.jenkinsci.plugins.workflow.job.WorkflowRun
我也尝试使用了
SpecificBuildSelector
:step([
$class: 'CopyArtifact',
fingerprintArtifacts: true,
projectName: 'MyProject1',
selector: [
$class: 'SpecificBuildSelector',
buildNumber: params.pr1_run.number
],
target: 'pr1'
])
我得到了
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use field hudson.model.Run number
我希望将用户选择的多个上游项目构建组合成一个最终构建。
step([ $class: 'CopyArtifact', fingerprintArtifacts: true, run: pr1_run ])
就可以了。因为如果手头有一个完美描述我想要的确切运行的对象,为什么还要两次指定项目名称呢? - Stefan Seidel