N.Reddy
N.Reddy

Reputation: 541

How to retrieve current workspace using Jenkins Pipeline Groovy script?

I am trying to get the current workspace of my Jenkins build using a Groovy pipeline script:

node('master') {
    // PULL IN ENVIRONMENT VARIABLES
    // Jenkins makes these variables available for each job it runs
    def buildNumber = env.BUILD_NUMBER
    def workspace = env.WORKSPACE
    def buildUrl = env.BUILD_URL

    // PRINT ENVIRONMENT TO JOB
    echo "workspace directory is ${workspace}"
    echo "build URL is ${env.BUILD_URL}"
}

It returns:

[Pipeline] Allocate node : Start
Running on master in /Users/Shared/Jenkins/Home/jobs/test/workspace
[Pipeline] node {
[Pipeline] echo
workspace directory is null
[Pipeline] echo
build URL is http://localhost:8080/job/test/5/
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS

Upvotes: 51

Views: 209369

Answers (8)

user18801436
user18801436

Reputation: 21

The key is that, this works if used within double quotes instead of single quotes, below is my code and this worked!

script {
    echo 'Entering Stage - Nexus Upload'
    def artefactPath = "${WORKSPACE}/build/deploy/identityiq.war"   
    echo "printing the path ${artefactPath}"
}

Upvotes: 2

Litty Philip
Litty Philip

Reputation: 1145

For me just ${WORKSPACE} worked without even initializing the variable workspace.

Upvotes: 51

Saikat
Saikat

Reputation: 16710

I have successfully used as shown below in Jenkinsfile:

steps {
  script {
    def reportPath = "${WORKSPACE}/target/report"
    ...
  }
}

Upvotes: 4

Upen
Upen

Reputation: 1438

In Jenkins pipeline script, I am using

targetDir = workspace

Works perfect for me. No need to use ${WORKSPACE}

Upvotes: 0

Ismail
Ismail

Reputation: 809

A quick note for anyone who is using bat in the job and needs to access Workspace:

It won't work.

$WORKSPACE https://issues.jenkins-ci.org/browse/JENKINS-33511 as mentioned here only works with PowerShell. So your code should have powershell for execution

 stage('Verifying Workspace') {
  powershell label: '', script: 'dir $WORKSPACE'
}

Upvotes: 5

Dresden
Dresden

Reputation: 31

This is where you can find the answer in the job-dsl-plugin code.

Basically you can do something like this:

readFileFromWorkspace('src/main/groovy/com/groovy/jenkins/scripts/enable_safehtml.groovy')

Upvotes: 0

chris_f
chris_f

Reputation: 1198

I think you can also execute the pwd() function on the particular node:

node {
    def PWD = pwd();
    ...
}

Upvotes: 5

Krzysztof Krasoń
Krzysztof Krasoń

Reputation: 27466

There is no variable included for that yet, so you have to use shell-out-read-file method:

sh 'pwd > workspace'
workspace = readFile('workspace').trim()

Or (if running on master node):

workspace = pwd()

Upvotes: 7

Related Questions