如何使用声明性管道从已执行的作业中复制工件?

Dmi*_*try 5 jenkins jenkins-pipeline

我的管道脚本如下所示:

pipeline {
    agent {
        label 'my-pc'
    }

    stages {
        stage ('Build') {
            steps {
                build job: 'myjob', parameters: [string(name: 'BRANCH', value: 'master')]
            }
            post {
                always {
                    sh 'echo TODO: copy artifacts here'
                }
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我想复制由myjob生成的工件。我怎样才能做到这一点?

Jenkins 文档页面“记录测试和工件”有一条不适用于我的管道的说明(在我的情况下,工件是由单独的作业生成的)。

Tra*_*nin 4

您可以使用Copy Artifact 插件,然后可以将其与step步骤一起使用,这允许调用构建器或构建后操作,就像在自由式作业中一样。请参阅您作业的管道语法并查阅代码片段生成器。( https://[jenkins-url]/[path-to-your-job]/pipeline-syntax/ )

myjob这是将所有工件从作业复制到当前管道作业工作区的方法:

pipeline {
    agent {
        label 'my-pc'
    }

    stages {
        stage ('Build') {
            steps {
                build job: 'myjob', parameters: [string(name: 'BRANCH', value: 'master')]
            }
            post {
                always {
                    step([
                        $class: 'CopyArtifact',
                        filter: '*',
                        projectName: 'myjob',
                        selector: [
                            $class: 'StatusBuildSelector',
                            stable: false
                        ]])
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)