Получить абсолютный путь к каталогу рабочей области в плагине Jenkins Pipeline
В настоящее время я делаю некоторую оценку плагина Jenkins Pipeline (ранее известного как плагин Workflow).
Читая документацию, я узнал, что в настоящее время я не могу найти путь к рабочей области, используя
env.WORKSPACE
:
Внутри рабочего процесса script отсутствуют следующие переменные:
NODE_LABELS
WORKSPACE
SCM-специфичные переменные, такие как SVN_REVISION
Есть ли другой способ, как получить абсолютный путь к текущему рабочему пространству? Мне нужно, чтобы это выполняло некоторый тест, который, в свою очередь, получает некоторый параметр (абсолютный путь к некоторому исполняемому файлу).
Я уже пробовал использовать new File("").absolutePath()
внутри раздела @NonCPS
, но похоже, что материал не-CPS всегда выполняется на главном сервере.
Кто-нибудь знает, как получить этот путь, не запуская пакетный пакет script, который сохраняет путь в некоторый файл, который позже можно прочитать снова?
Ответы
Ответ 2
Примечание: это решение работает только в том случае, если ведомые устройства имеют ту же структуру каталогов, что и главный. pwd()
вернет каталог рабочей области на master из-за JENKINS-33511.
Я использовал это, используя pwd()
функциональность плагина конвейера. Итак, если вам нужно получить рабочую область на подчиненном устройстве, вы можете сделать что-то вроде этого:
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
}
Надеюсь, это поможет.
Ответ 3
Когда вы используете script, концепция рабочего пространства бессмысленно. Лучше всего использовать readFile для чтения файла в строку, а затем передать эту строку в вашу библиотеку для обработки. Метод pwd() не может помочь вам, потому что он выполняется на главном компьютере, а ваши файлы хранятся на node.