Get absolute path to workspace directory in Jenkins Pipeline plugin

前端 未结 4 1914
南方客
南方客 2020-12-01 15:21

I\'m currently doing some evaluation on the Jenkins Pipeline plugin (formerly know as Workflow plugin). Reading the documentation I found out that I currently cannot retriev

相关标签:
4条回答
  • 2020-12-01 16:08

    Note: this solution works only if the slaves have the same directory structure as the master. pwd() will return the workspace directory on the master due to JENKINS-33511.

    I used to do it using pwd() functionality of pipeline plugin. So, if you need to get a workspace on slave, you may do smth like this:

    node('label'){
        //now you are on slave labeled with 'label'
        def workspace = pwd()
        //${workspace} will now contain an absolute path to job workspace on slave 
    }
    
    0 讨论(0)
  • 2020-12-01 16:10

    Since version 2.5 of the Pipeline Nodes and Processes Plugin (a component of the Pipeline plugin, installed by default), the WORKSPACE environment variable is available again. This version was released on 2016-09-23, so it should be available on all up-to-date Jenkins instances.

    Example

    node('label'){
        // now you are on slave labeled with 'label'
        def workspace = WORKSPACE
        // ${workspace} will now contain an absolute path to job workspace on slave
    
        workspace = env.WORKSPACE
        // ${workspace} will still contain an absolute path to job workspace on slave
    
        // When using a GString at least later Jenkins versions could only handle the env.WORKSPACE variant:
        echo "Current workspace is ${env.WORKSPACE}"
    
        // the current Jenkins instances will support the short syntax, too:
        echo "Current workspace is $WORKSPACE"
    
    }
    
    0 讨论(0)
  • 2020-12-01 16:11

    For me WORKSPACE was a valid property of the pipeline itself. So when I handed over this to a Groovy method as parameter context from the pipeline script itself, I was able to access the correct value using "... ${context.WORKSPACE} ..."

    (on Jenkins 2.222.3, Build Pipeline Plugin 1.5.8, Pipeline: Nodes and Processes 2.35)

    0 讨论(0)
  • 2020-12-01 16:20

    "WORKSPACE" environment variable works for the latest version of Jenkins Pipeline. You can use this in your Jenkins file: "${env.WORKSPACE}"

    Sample use below:

    def files = findFiles glob: '**/reports/*.json'
    for (def i=0; i<files.length; i++) {
    jsonFilePath = "${files[i].path}"       
    jsonPath = "${env.WORKSPACE}" + "/" + jsonFilePath
    echo jsonPath
    

    hope that helps!!

    0 讨论(0)
提交回复
热议问题