Использование переменных / параметров Jenkins в скрипте Python с os.path.join - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь научиться использовать переменные из Jenkins в скриптах Python.Я уже узнал, что мне нужно вызывать переменные, но я не уверен, как реализовать их в случае использования os.path.join ().

Я не разработчик;Я технический писатель.Этот код был написан кем-то другим.Я просто пытаюсь адаптировать сценарии Jenkins, чтобы они были параметризованы, чтобы нам не приходилось изменять сценарии Python для каждого выпуска.

Я использую встроенные сценарии Python Jenkins внутри задания Jenkins.Строковыми параметрами Дженкинса являются «BranchID» и «BranchIDShort».Я просмотрел много вопросов, которые говорят о том, как вы должны установить переменные в скрипте Python, но в случае os.path.join () я не уверен, что делать.

Вот оригинальный код.Я добавил часть, где мы устанавливаем переменные из параметров Jenkins, но я не знаю, как их использовать в функции os.path.join ().

# Delete previous builds.

import os
import shutil

BranchID = os.getenv("BranchID")
BranchIDshort = os.getenv("BranchIDshort")

print "Delete any output from a previous build."
if os.path.exists(os.path.join("C:\\Doc192CS", "Output")):
    shutil.rmtree(os.path.join("C:\\Doc192CS", "Output"))

Я ожидаю, что результат будет выглядеть так: c: \ Doc192CS \ Output

Боюсь, что если я сделаю следующий код:

if os.path.exists(os.path.join("C:\\Doc",BranchIDshort,"CS", "Output")):
    shutil.rmtree(os.path.join("C:\\Doc",BranchIDshort,"CS", "Output"))

, я получу: c: \ Doc \ 192 \ CS \ Output.

Есть ли способ использовать переменную BranchIDshort в этом контексте, чтобы получить вывод c: \ Doc192CS \ Output?

1 Ответ

1 голос
/ 27 марта 2019

Пользователь @Adonis дал правильное решение в качестве комментария.Вот что он сказал:

Действительно, ты прав.Что вы хотели бы сделать, это скорее: os.path.exists(os.path.join("C:\\","Doc{}CS".format(BranchIDshort),"Output")) (вкратце используйте строку формата для 2-го аргумента)

Итак, полный исправленный код:

import os
import shutil

BranchID = os.getenv("BranchID")
BranchIDshort = os.getenv("BranchIDshort")

print "Delete any output from a previous build."
if os.path.exists(os.path.join("C:\\Doc{}CS".format(BranchIDshort), "Output")):
    shutil.rmtree(os.path.join("C:\\Doc{}CS".format(BranchIDshort), "Output"))

Спасиботы, @Adonis!

...