通过os.path.join在Python脚本中使用Jenkins变量/参数

时间:2019-03-27 15:39:27

标签: python variables jenkins parameters parameter-passing

我正在尝试学习如何在Python脚本中使用Jenkins的变量。我已经知道需要调用变量,但是我不确定在使用os.path.join()的情况下如何实现它们。

我不是开发人员;我是技术作家。这段代码是别人写的。我只是在尝试调整Jenkins脚本,以便对其进行参数化,因此我们不必为每个发行版都修改Python脚本。

我在Jenkins作业中使用内联Jenkins python脚本。 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 个答案:

答案 0 :(得分:1)

用户@Adonis作为注释提供了正确的解决方案。这是他说的话:

  

确实您是对的。您想要做的是:   os.path.exists(os.path.join("C:\\","Doc{}CS".format(BranchIDshort),"Output"))   (简而言之,请为第二个参数使用格式字符串)

因此,完整的更正代码是:

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!