Проверьте, выполняется ли текущий скрипт Python в среде Дженкинса

#python #jenkins #environment-variables

Вопрос:

Я пишу сценарий Python 3, предназначенный для запуска от Дженкинса; Однако я бы хотел, чтобы он печатал несколько отладочных сообщений только тогда, когда он запускается локально на компьютере разработчика.

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

 debug_mode = False
if 'DEBUGMODE' in os.environ:
   debug_mode = bool(os.environ.get('DEBUGMODE'))

print('Script is starting up')

(...)    # Do stuff

if debug_mode:
   print('So many things to do...') 

(...)    # Do other stuff
 

На самом деле, мне не нравится заставлять разработчика определять ОТЛАДОЧНЫЙ режим в своей среде, поэтому мне
интересно, есть ли какой-либо другой способ, чтобы мой скрипт автоматически знал, что он выполняется в задании Дженкинса, а не в отладчике.

Заранее спасибо!

Макс

Ответ №1:

Когда выполняется задание Дженкинса, оно всегда устанавливает некоторые переменные среды по умолчанию.
в вашем коде python вы можете просто проверить, существует ли одна (или несколько) из этих переменных.
Вы можете выбрать JENKINS_URL переменную среды, так как она довольно уникальна и, вероятно, не будет использоваться для каких-либо других целей, помимо того, чего вы хотите достичь.
поэтому ваш код может выглядеть так:

 debug_mode = 'JENKINS_URL' not in os.environ

print('Script is starting up')

(...)  # Do stuff

if debug_mode:
    print('So many things to do...')

(...)  # Do other stuff