Переменные среды Jenkins, доступные на этапе сборки post

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

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

есть ли способ получить доступ к этим переменным из скрипта python шага сборки post? Я делаю что-то не так?

5 ответов


другое решение-использовать Jenkins Envinject Плагин чтобы переопределить параметры Дженкинса как переменные среды:

enter image description here

эта переменная среды должна быть доступна в скрипте Python шага сборки post.

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

enter image description here

enter image description here


плагин 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"

Я не уверен в python, но, по крайней мере, скрипты оболочки могут принимать параметры от Jenkins

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

вам просто нужно добавить его в шаги post

Jenkins post step screen


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

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


У меня была такая же проблема на Фристайл проекта. Я решил это сейчас, переместив шаг сборки post в саму часть сборки (как последний шаг там).