我当前正在尝试触发现有作业,并在当前作业的工作区中接收生成的工件。
以下工作正常:
pipeline { agent { label 'builder-rpm' } options { timestamps() ansiColor('xterm') } stages { stage('Build Other pipeline') { steps { build job: 'Components/components-rpm-build', parameters: [ string(name: 'Component', value: 'foo'), ] copyArtifacts( filter: 'results/*.rpm', fingerprintArtifacts: true, flatten: true, projectName: 'Components/components-rpm-build', selector: lastSuccessful(), target: "${env.WORKSPACE}/dist" ) } } } }
问题是,这lastSuccessful()确实需要最后一次成功的构建,这意味着如果其他一些用户设法比我更快地运行并行构建,那么我将采用他们的工件而不是我的工件。
lastSuccessful()
根据此页面 ,应该有一种使用特定作业的方法specific:
specific
def built = build('downstream'); copyArtifacts(projectName: 'downstream', selector: specific("${downstream.number}"));
但是,没有关于如何在声明式管道中使用它的解释或示例。
有什么提示吗?
在此先感谢您的帮助。
我找到了一个不错的解决方案:切换到script简单的工作即可。
script
pipeline { agent { label 'builder-rpm' } options { timestamps() ansiColor('xterm') } stages { stage('Build Other pipeline') { steps { script { def built = build( job:'Components/components-rpm-build', parameters:[ string(name:'Component', value:'ew-filesystem'), string(name:'RepoServer', value:'') ] ) copyArtifacts( projectName: 'Components/components-rpm-build', selector: specific("${built.number}"), target: "${env.WORKSPACE}/dist", filter: "results/*" ) } } } } }