Jenkins CopyArtifact步骤-无法找到工件副本的项目

sfg*_*ups 6 jenkins jenkins-pipeline

基于这篇文章,尝试在我的环境中测试管道代码。但是它给下面的错误信息。如何修复他的管道代码?

ERROR: Unable to find project for artifact copy: test
This may be due to incorrect project name or permission settings; see help for project name in job configuration.
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

如何在管道(jenkinsfile)中使用Jenkins Copy Artifacts插件?

pipeline {
    agent any
    stages {
        stage ('push artifact') {
            steps {
                sh '[ -d archive ] || mkdir archive'
                sh 'echo test > archive/test.txt'
                sh 'rm -f test.zip'
                zip zipFile: 'test.zip', archive: false, dir: 'archive'
                archiveArtifacts artifacts: 'test.zip', fingerprint: true
            }
        }

        stage('pull artifact') {
            steps {
                sh 'pwd'
                sh 'ls -l'
                sh 'env'
                step([  $class: 'CopyArtifact',
                        filter: 'test.zip',
                        projectName: '${JOB_NAME}',
                        fingerprintArtifacts: true,
                        selector: [$class: 'SpecificBuildSelector', buildNumber: '${BUILD_NUMBER}']
                ])
                unzip zipFile: 'test.zip', dir: './archive_new'
                sh 'cat archive_new/test.txt'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 18

如果启用授权(如 rbac),则必须向项目授予“复制工件”权限。在项目配置中,General -> Permission to Copy Artifact,勾选并设置可以复制Artifact的项目

  • 很好的答案。如果没有你,我不知道我会花多少时间来解决这个问题。非常感谢。 (5认同)
  • 您可以使用逗号分隔值设置多个项目名称。您还可以使用 * 作为通配符。 (2认同)
  • 我也遇到同样的问题,设置了权限还是报错 (2认同)

Pit*_*Pit 5

而不是使用projectName: '${JOB_NAME}',对我有用的是使用projectName: env.JOB_NAME。也就是说,您完整的复制工件步骤将如下所示:

step([  $class: 'CopyArtifact',
        filter: 'test.zip',
        projectName: env.JOB_NAME,
        fingerprintArtifacts: true,
        selector: [$class: 'SpecificBuildSelector', buildNumber: env.BUILD_NUMBER]
])
Run Code Online (Sandbox Code Playgroud)

或者使用更现代的语法:

copyArtifacts(
    filter: 'test.zip',
    projectName: env.JOB_NAME,
    fingerprintArtifacts: true,
    selector: specific(env.BUILD_NUMBER)
)
Run Code Online (Sandbox Code Playgroud)