Установка глобальных переменных среды в Jenkinsfile в Windows - PullRequest
0 голосов
/ 24 мая 2018

У меня есть сервер Jenkins CI, работающий поверх системы Windows, и теперь я хотел бы установить глобальные переменные среды для своего конвейера.

Я пробовал два разных способа, но оба безуспешно:

node {
    environment {
        MY_PYTHON='D:\ProgramData\Anaconda3'
        PATH='%MY_PYTHON%;%MY_PYTHON%\Scripts;%PATH%'
    }
    stage ('Checkout and Build') {
        bat 'echo %MY_PYTHON%'
        bat 'echo %PATH%'
        bat 'python --version'
    }
}

После запуска сборки выдается следующая ошибка:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:

WorkflowScript: 3: unexpected char: '\' @ line 3, column 22.

           MY_PYTHON='D:\ProgramData\Anaconda3'

                        ^

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

environment {
    MY_PYTHON='D:\\ProgramData\\Anaconda3'
    PATH='%MY_PYTHON%;%MY_PYTHON%\\Scripts;%PATH%'
}

Так что после перезапуска сборки яполучил ошибку только для команды python --version, так как python по-прежнему не может быть найден на пути, а также я ничего не получаю для MY_PYTHON и для PATH Я получаю все предопределенные пути, кроме тех, которые я хотел добавить.

Застрял, поэтому любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Попробуйте: MY_PYTHON = 'D: \\ ProgramData \\ Anaconda3'

0 голосов
/ 01 октября 2018
environment {
    MY_PYTHON='D:\ProgramData\Anaconda3'
    PATH='%MY_PYTHON%;%MY_PYTHON%\Scripts;%PATH%' <----
}

Я не думаю, что Дженкинс способен расширять переменные в блоке среды, и я думаю, что ваша переменная PATH оставляет полностью пустым.Вы можете проверить это, добавив шаг bat 'set', который печатает все переменные среды в Windows.Я попробовал это, и Дженкинс фактически не может выполнить set, потому что PATH должен быть пустым.

В вашем случае, возможно, вы бы предпочли сделать что-то вроде:

node {
    environment {
        MY_PYTHON='D:\\ProgramData\\Anaconda3'
    }
    stage ('Checkout and Build') {
        bat '%MY_PYTHON%\\python --version'
    }
}

(я неразработчик Python, поэтому я не уверен, что этот путь будет правильным).

Я также заметил, что вы можете использовать переменные следующим образом:

  • bat 'echo var: %VARIABLE_NAME%' <-- одинарная кавычка,% var% для переменной </li>
  • bat "echo var: $VARIABLE_NAME" <- двойная кавычка, $ var для переменной </li>

Сочетание одинарных кавычек и $var не выглядитчтобы работать, я предполагаю, что двойная кавычка заставляет Дженкинса расширять переменную (я думаю, что она является переменной Groovy) вместо операционной системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...