Jenkins archiveArtifacts 生成“未找到”错误

Gas*_*Gas 2 artifacts jenkins jenkins-pipeline

我有非常简单的管道,如下所示:

pipeline {
    agent any
    stages {
        stage('Build Automation') {
            steps {
                sh '''
                echo "BUILD NUMBER: ${BUILD_NUMBER}"
                cd myproject
                mvn clean package 
                '''
            }
        }
        stage('Prepare artifacts') {
            steps {
                sh '''
                cd myproject/target
                ls
                archiveArtifacts 'myproject/target/*' 
                '''
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Build Automation步骤成功完成,但我总是从“archiveArtifacts”中收到错误:

[myproject-automation_master-FALMJHZX7ZH5GMLQBBOYFJQRFPX4WIHQXBH2YXEQDL4TDAMTRYTQ] Running shell script
+ cd myproject/target
+ ls
classes
generated-sources
generated-test-sources
myapp
myapp.war
maven-archiver
maven-status
test-classes
+ archiveArtifacts myproject/target/*
/var/jenkins_home/workspace/myproject-automation_master-FALMJHZX7ZH5GMLQBBOYFJQRFPX4WIHQXBH2YXEQDL4TDAMTRYTQ@tmp/durable-6a43d2f0/script.sh: 5: /var/jenkins_home/workspacemyproject-automation_master-FALMJHZX7ZH5GMLQBBOYFJQRFPX4WIHQXBH2YXEQDL4TDAMTRYTQ@tmp/durable-6a43d2f0/script.sh: archiveArtifacts: not found
Run Code Online (Sandbox Code Playgroud)

我已经添加ls查看文件夹中是否有任何文件target,因此它们在那里,但 archiveArtifacts 总是返回未找到。我尝试过各种模式,例如*.war, **/target/*.war,但没有运气。

可能出了什么问题?

小智 7

您需要从 sh 步骤中删除 archiveArtifacts 步骤。现在的情况是,它作为 shell 脚本的一部分运行并解释为命令。

        steps {
            sh '''
                cd myproject/target
                ls
            '''
            archiveArtifacts 'myproject/target/*' 
        }
Run Code Online (Sandbox Code Playgroud)

以上应该有效。