Поскольку их легко тестировать и передавать в каждую программу, выполняемую при сборке, я решил основывать проверку на переменных среды.
Хотя ответ rohit показывает один из способов установки переменных в Jenkinsfile, я бы предпочел полагаться на то, что делает сам Jenkins, поэтому я проверил переменные среды, заданные в моих заданиях Jenkins, и есть много вариантов на выбор:
Общая информация Дженкинса
Они кажутся постоянными в экземпляре Дженкинса.
Не относится к Дженкинсу, но также полезно следующее:
Наш Jenkins работает под пользователем jenkins
, поэтому тестирование этого значения также возможно.
Информация о работе
Они имеют постоянные значения в сборках для одного и того же задания.
JOB_URL
JOB_NAME
JOB_BASE_NAME
JOB_DISPLAY_URL
Информация о сборке
Они имеют постоянные значения для одной и той же сборки (то есть для разных sh
вызовов).
BUILD_URL
BUILD_TAG
RUN_CHANGES_DISPLAY
RUN_DISPLAY
BUILD_DISPLAY_NAME
BUILD_ID
BUILD_NUMBER
Информация об узле
Они относятся к узлу, на котором выполняется текущая команда.
JENKINS_HOME
JENKINS_NODE_COOKIE
NODE_LABELS
NODE_NAME
Special
Этот меняется с каждой сборкой, может меняться от узла к узлу и даже может меняться с конфигурацией Jenkinsfile:
Разное
Я не уверен в этом. Они определенно из Дженкинса, но я не знаю, каков их жизненный цикл.
HUDSON_SERVER_COOKIE
JENKINS_SERVER_COOKIE
HUDSON_COOKIE
Заключительные замечания
Для своих собственных целей я решил пойти с JENKINS_HOME
. Название очень специфично для Дженкинса и кажется более фундаментальным, чем, скажем, JENKINS_URL
. Хотя это не означает, что сборка выполняется Дженкинсом, в этом случае она всегда будет установлена. Я не против ложных срабатываний, пока я не получаю ложные срабатывания.