首页 > 解决方案 > 詹金斯 | DSL| 工作区目录问题

问题描述

我有一个 Jenkins DSL 工作。它用于java构建。我陷入了一个奇怪的问题。jobname 是 DSL,我看到创建了一个名为 DSL 的工作区,但是当作业运行时,它添加了另一个名为 DSL@2 的工作区。我无法从 DSL 工作区获取最终 jar 文件的问题

pipeline 
{
    agent any
    stages 
    {
        stage('Build') 
        {

            agent   {
                docker { image 'maven:latest'

                    args  '-v /home/ubuntu/jenkins/jenkins_home/.m2:/root/.m2'

                       }
                    }
                        steps {
                            git branch: "${params.branch}", url: "git@github.org/repo.git"
                            sh 'mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true'
                            sh "ls -la target/name.jar "

                             }


        }

        stage('Copy Artifects')
    { 
        steps {
           //print "$params.IP"
           // sh '${params.IP}"
       sh "ls -la && pwd "
     sh "scp target/name.jar ubuntu@${params.IP}:/home/ubuntu/target/name.jar_2"

             }
    }  
}
}

失业

Compiling 19 source files to /var/jenkins_home/workspace/dsl@2/auth-client/target/classes

标签: jenkinsjenkins-pipelinejenkins-job-dsl

解决方案


DSL@2 意味着您要么配置了一个并发作业并且同时运行了两个构建,要么您遇到了错误https://issues.jenkins-ci.org/browse/JENKINS-30231

为了解决您的问题:
您正在从 maven 映像创建的 docker 容器中构建stage('Build') 。
但是,stage('Copy Artifects')在该容器之外运行

要修复它,您需要将代理{}移动到管道{} 级别,如下所示:

pipeline 
{
    agent   {
                docker { 
                    image 'maven:latest'
                    args  '-v /home/ubuntu/jenkins/jenkins_home/.m2:/root/.m2'
                    }
            }
    stages 
    {
        stage('Build') 
        {
            steps {
                git branch: "${params.branch}", url: "git@github.org/repo.git"
                sh 'mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true'
                sh "ls -la target/name.jar "
            }
        }

        stage('Copy Artifects')
        { 
            steps {

                sh "ls -la && pwd "
                sh "scp target/name.jar ubuntu@${params.IP}:/home/ubuntu/target/name.jar_2"
            }
        }  
    }
}

推荐阅读