2016-06-15 1 views
8

Я пытаюсь получить текущее рабочее пространство моей сборки Jenkins, используя сценарий конвейера Groovy.Как получить текущую рабочую область с использованием сценария Jenkins Pipeline Groovy?

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

возвращает

[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 
+1

https://issues.jenkins-ci.org/plugins/servlet/mobile#issue/JENKINS-33511 –

+1

Возможный дубликат [Получить абсолютный путь к каталогу рабочей области в плагине Jenkins Pipeline] (http://stackoverflow.com/questions/36934028/get-absolute-path-to-workspace-directory-in-jenkins-pipe-plugin) –

ответ

4

Существует никакая переменная не включена для этого еще, так что вы должны использовать метод оболочечной вне чтения файла:

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

Или (если работает на главном узле):

workspace = pwd() 
+0

Не забудьте обрезать() результат readFile(), иначе вы получите новую строку из нет нигде. – Chadi

+0

Спасибо !!!!!! Работа – vijay

2

Я думаю, что y ожно также выполнить функцию PWD() на конкретном узле:

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

Для меня просто «$ {} Рабочее пространство» работал даже без инициализации переменной «рабочее пространство».

+2

меня тоже, но только с прописными буквами '$ {WORKSPACE}' работает, '$ {workspace}' НЕ – Rhubarb

+1

Оба работают для меня. :) –

Смежные вопросы