Подтвердить что ты не робот

Получить абсолютный путь к каталогу рабочей области в плагине Jenkins Pipeline

В настоящее время я делаю некоторую оценку плагина Jenkins Pipeline (ранее известного как плагин Workflow). Читая документацию, я узнал, что в настоящее время я не могу найти путь к рабочей области, используя env.WORKSPACE:

Внутри рабочего процесса script отсутствуют следующие переменные:

NODE_LABELS

WORKSPACE

SCM-специфичные переменные, такие как SVN_REVISION

Есть ли другой способ, как получить абсолютный путь к текущему рабочему пространству? Мне нужно, чтобы это выполняло некоторый тест, который, в свою очередь, получает некоторый параметр (абсолютный путь к некоторому исполняемому файлу). Я уже пробовал использовать new File("").absolutePath() внутри раздела @NonCPS, но похоже, что материал не-CPS всегда выполняется на главном сервере.

Кто-нибудь знает, как получить этот путь, не запуская пакетный пакет script, который сохраняет путь в некоторый файл, который позже можно прочитать снова?

4b9b3361

Ответ 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.