Search code examples
jenkinsjenkins-pipelinejenkins-job-dsl

Jenkins | DSL| Workspace DIR issue


I have a Jenkin DSL JOB. It's for java build. I am stuck in a strange problem. jobname is DSL, I saw a workspace with the name of DSL is created, But when the job runs it added another workspace with the name of DSL@2. The problem I can not get final jar file from DSL workspace

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"

             }
    }  
}
}

OUT Of the JOB

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

Solution

  • DSL@2 means you either have a concurrent job configured and two builds runnning at the same time, OR you got a bug https://issues.jenkins-ci.org/browse/JENKINS-30231

    To address your issue:
    you are building stage('Build') inside a docker container created from maven image.
    However, stage('Copy Artifects') is run OUTSIDE of that container

    To fix it, you need to move agent{} to pipeline{} level like this:

    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"
                }
            }  
        }
    }