No workspace variable during workflow / pipeline build?

3,594 views
Skip to first unread message

David Karlsen

unread,
Jan 27, 2016, 4:14:05 AM1/27/16
to Jenkins Users
I have this build definition:

node ('docker') {
  wrap([$class: 'TimestamperBuildWrapper']) {
    stage 'checkout'
    checkout scm: [$class: 'GitSCM', branches: [[name: '*/develop']], userRemoteConfigs: [[url: 'ssh://git@myserver:port/myrepo.git']]]

    stage 'unit-test'
    env.JAVA_HOME="${tool 'Oracle-JDK8-64bit'}"
    def mvnHome = tool 'apache-maven-3.x'
    def workSpace = env.WORKSPACE
    def mvnCmd = "${mvnHome}/bin/mvn -B -Dmaven.repo.local=${workSpace}/.m2"
    echo "workspace: ${workSpace} mvnCmd: ${mvnCmd}"
    sh "${mvnCmd}/bin/mvn -B clean install"
....




But workspace is null:

Running: Print Message
08:55:38 workspace: null mvnCmd: /var/lib/jenkins/tools/maven/apache-maven-3.x/bin/mvn -B -Dmaven.repo.local=null/.m2

Should it not be assigned to the env.WORKSPACE var by default?

Eric Pyle

unread,
Jan 27, 2016, 1:16:36 PM1/27/16
to jenkins...@googlegroups.com
WORKSPACE is documented as not being available in workflow/pipeline scripts. I found this when you select "env" under Global Variables in the snippet generator:

The following variables are currently unavailable inside a workflow script:

  • EXECUTOR_NUMBER
  • NODE_LABELS
  • WORKSPACE
  • SCM-specific variables such as SVN_REVISION
--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/5d2f08e0-f692-4b6e-a657-dbb5bc66a251%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Eric Pyle

unread,
Jan 27, 2016, 1:51:01 PM1/27/16
to jenkins...@googlegroups.com
Workaround:

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

Craig Rodrigues

unread,
Jan 27, 2016, 2:20:25 PM1/27/16
to Jenkins Users
Hi,

You could also work around this by doing:

node() {
    workspace = pwd()
   // rest of code here
}

See: https://github.com/freebsd/freebsd-ci/blob/master/scripts/build/build-test.groovy

for an example.
--
Craig

David Karlsen

unread,
Jan 27, 2016, 2:22:42 PM1/27/16
to Jenkins Users, rod...@freebsd.org
Yes - that's what I ended with - I was a bit dim in the start not really reasoning over what WORKSPACE really is.
Thanks a lot for your time and answer!
    checkout scm: [$class: 'GitSCM', branches: [[name: '*/develop']], userRemoteConfigs: [[url: 'ssh:...@myserver:port/myrepo.git']]]

    stage 'unit-test'
    env.JAVA_HOME="${tool 'Oracle-JDK8-64bit'}"
    def mvnHome = tool 'apache-maven-3.x'
    def workSpace = env.WORKSPACE
    def mvnCmd = "${mvnHome}/bin/mvn -B -Dmaven.repo.local=${workSpace}/.m2"
    echo "workspace: ${workSpace} mvnCmd: ${mvnCmd}"
    sh "${mvnCmd}/bin/mvn -B clean install"
....




But workspace is null:

Running: Print Message
08:55:38 workspace: null mvnCmd: /var/lib/jenkins/tools/maven/apache-maven-3.x/bin/mvn -B -Dmaven.repo.local=null/.m2

Should it not be assigned to the env.WORKSPACE var by default?
--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/5d2f08e0-f692-4b6e-a657-dbb5bc66a251%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Jesse Glick

unread,
Nov 3, 2016, 1:10:22 PM11/3/16
to Jenkins Users, rod...@freebsd.org
A subsequent plugin update does in fact define the environment variable `WORKSPACE`. But yes you could always use `pwd()` instead.
Reply all
Reply to author
Forward
0 new messages