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

问题描述 投票:0回答:1

我正在尝试学习如何在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?

python variables jenkins parameters parameter-passing
1个回答
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!

© www.soinside.com 2019 - 2024. All rights reserved.