Ответ 1
Для меня просто ${workspace}
работал даже без инициализации переменной 'workspace.'
Я пытаюсь получить текущую рабочую область моей сборки Jenkins, используя скрипт конвейера 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
Для меня просто ${workspace}
работал даже без инициализации переменной 'workspace.'
Пока нет переменной, включенной для этого, поэтому вы должны использовать метод shell-out-read-file:
sh 'pwd > workspace'
workspace = readFile('workspace').trim()
Или (если выполняется на главном node):
workspace = pwd()
Я думаю, вы также можете выполнить функцию pwd() на конкретном node:
node {
def PWD = pwd();
...
}
Здесь вы можете найти ответ в коде job-dsl-plugin.
В основном вы можете сделать что-то вроде этого:
readFileFromWorkspace('src/main/groovy/com/groovy/jenkins/scripts/enable_safehtml.groovy')
Краткое примечание для тех, кто использует bat
в работе и нуждается в доступе к Workspace:
Это не сработает.
$WORKSPACE
https://issues.jenkins-ci.org/browse/JENKINS-33511, как упомянуто здесь, работает только с PowerShell. Таким образом, ваш код должен иметь powershell
для выполнения
stage('Verifying Workspace') {
powershell label: '', script: 'dir $WORKSPACE'
}