TeamCity将cmdline python脚本参数视为python列表对象

时间:2018-01-08 13:07:10

标签: parameters python-2.x teamcity-10

我正在使用TeamCity(10.x)命令行运行运行python(2)脚本。命令可执行文件设置为:

/usr/bin/python

脚本参数设置为:

./some-python-script.py --mvn_version %maven.project.version% 
--artifact_id %maven.project.artifactId%

处理这些动态生成的构建参数时(来自之前的 maven runner 构建步骤,在相同的中) build),TeamCity默认将这些参数视为 list 类型对象!

因此,当我尝试将maven.project.version用作Nexus网址的一部分时,我最终会将列表作为网址的一部分: https://nexus_server/nexus/service/local/repositories/myproject/content/my/maven/group/some_artifact/[ '2.141']

在Linux命令行上运行相同的脚本时,相同的参数将被视为字符串。正如预期的那样,由于(音符类型 str ):

parser.add_argument('-mv', '--mvn_vrsn', type=str, nargs=1, \
default='2.140.0-SNAPSHOT', help='TCity: maven.project.version')

...我得到了预期的结果: https://nexus_server/nexus/service/local/repositories/myproject/content/my/maven/group/some_artifact/2.141

1 个答案:

答案 0 :(得分:0)

这可以通过为任何TeamCity原始变量指定列表元素后缀来解决,例如

mvn_vrsn[0] 

这将产生 2.141 ,而不是['2.141']!

不理想,但有效!