2015-04-29 4 views
4

Я понимаю, что Дженкинс задает определенные переменные среды во время выполнения сборки. Но мой вопрос: могу ли я получить доступ к этим переменным в моем сценарии после сборки?Переменные окружения Jenkins, доступные во время этапа пост-сборки

Я проверил быстрый тест, и я не смог получить доступ к PROJECT_NAME и BUILD_URL и т. Д. Из сценария сценария python после сборки.

Есть ли способ, с помощью которого я могу получить доступ к этим переменным из скрипта python после сборки? Я что-то делаю неправильно?

ответ

9

Другим решением является для использования Jenkins EnvInject Plugin для переопределения параметров Дженкинса в качестве переменных среды:

enter image description here

Эта переменная среды должна быть доступна в сценарии Python для пост-сборки.

В Linux и сценарии оболочки, я могу получить доступ к обоим (параметры Jenkins и переменные окружения):

enter image description here

enter image description here

2

Я не уверен, питона, но по крайней мере, скрипты могут принимать параметры из Дженкинс

/code/workspace/myscript.sh ${BUILD_NUMBER} 

Вам просто нужно, чтобы добавить его к сообщению шаги

Jenkins post step screen

+0

Я не пробовал это, но я столкнулся с открытой проблемой с прохождением аргументов, поэтому я предполагаю, что это не сработает. См .: https://issues.jenkins-ci.org/browse/JENKINS-19873 – haridsv

2

Да, переменные окружения, которые генерируются путем Сам Дженкинс доступен в этапах после сборки (для ваших собственных переменных окружения вам потребуется EnvInject plugin)

Вы можете запустить пост-сборку «выполнить оболочку» или выполнить команду «командная команда» и просто ввести set. Все, что вы там видите, доступно.

3

Плагин EnvInject читает файл свойств каждый раз, когда мне нужно экспортировать переменную.

Так я реализовал необходимую функциональность с помощью Groovy PostBuild плагин на первом этапе после сборки, который считывает все необходимые переменные из файла свойств и экспортирует их в течение следующих шагов после сборки:

/* 
Inject environment variables using Groovy because EnvInject plugin is not user-friendly 
*/ 

import hudson.model.* 

def console = manager.listener.logger.&println 

// read the props file 
def props = new Properties() 
new File("${manager.envVars['WORKSPACE']}/postbuild.props").withInputStream { 
    stream -> props.load(stream) 
} 

props.each{ 
    key, value -> console("${key}:${value}") 
    def pa = new ParametersAction([ 
     new StringParameterValue(key, value) 
    ]) 
    manager.build.addAction(pa) 
} 

А на каждый шаг сборки, который необходимо передать переменные шагов после сборки я делаю что-то вроде:

echo "hipchat_message=Server build succeded: <a href='https://$SERVER_NAME/'>$SERVER_NAME</a> (<a href='$BUILD_URL'>Job</a>)" > "$WORKSPACE/postbuild.props" 
Смежные вопросы