小编典典

声明式詹金斯管道,检索工件

jenkins

我当前正在尝试触发现有作业,并在当前作业的工作区中接收生成的工件。

以下工作正常:

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()确实需要最后一次成功的构建,这意味着如果其他一些用户设法比我更快地运行并行构建,那么我将采用他们的工件而不是我的工件。

根据此页面
,应该有一种使用特定作业的方法specific

def built = build('downstream');
copyArtifacts(projectName: 'downstream',
              selector: specific("${downstream.number}"));

但是,没有关于如何在声明式管道中使用它的解释或示例。

有什么提示吗?

在此先感谢您的帮助。


阅读 265

收藏
2020-07-25

共1个答案

小编典典

我找到了一个不错的解决方案:切换到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/*"
                    )
                }
            }
        }
    }
}
2020-07-25