我正在尝试使用PowerShell运行程序在TeamCity中设置新的构建配置。然而,我无法找到一种方法来在构建脚本中访问TeamCity系统属性。我看到有提示说这是可能的,但找不到如何实现的文档。
我已尝试使用PowerShell变量语法$variable来访问系统属性。我还打印了内存中的所有变量,但没有发现可用的teamcity变量。
在PowerShell运行程序中是否有可能实现,并且如果可能,需要使用哪种语法来使其工作?
我正在尝试使用PowerShell运行程序在TeamCity中设置新的构建配置。然而,我无法找到一种方法来在构建脚本中访问TeamCity系统属性。我看到有提示说这是可能的,但找不到如何实现的文档。
我已尝试使用PowerShell变量语法$variable来访问系统属性。我还打印了内存中的所有变量,但没有发现可用的teamcity变量。
在PowerShell运行程序中是否有可能实现,并且如果可能,需要使用哪种语法来使其工作?
TeamCity会设置环境变量,例如build.number(您可以在TeamCity中查看这些变量的列表)。
在PowerShell中,您可以使用"env"提供程序访问环境变量,例如:
$env:PATH
通过将“.”替换为“_”,可以访问TeamCity变量,因此可以将build.number变量访问为
TeamCity变量通过将"."替换为"_"来访问,因此build.number变量可以访问为
$env:build_number
%system.build.vcs.number%
实际上是 $env:build_vcs_number
。 - Elfalem$env:build_number
始终为空。然而,Teamcity愿意直接将%build.number%
替换为我想要的值。 - sirdankenv.build.number
,然后将其称为env.build_number
。实际上,您必须将Env变量命名为env.build_number
才能将其称为env.build_number
。" - magicode118可以使用脚本源代码框中可用的参数扩展,将任何TeamCity构建属性明确映射到脚本参数中。例如:.\build.ps1 -someParam:%build.name%
可以使用环境变量,在PowerShell中可以通过$env:NAME_IN_TEAMCITY语法
显式访问,例如:$env:TEAMCITY_VERSION
,或者循环并推入变量范围。
可以访问TeamCity在构建期间提供的构建属性文件。该文件位于$env:TEAMCITY_BUILD_PROPERTIES_FILE
,如果加载XML版本,则很容易循环遍历并将所有内容推入范围(当然,您得到的一切都是字符串)。我发布了一个关于如何做到这一点的gist(https://gist.github.com/piers7/6432985)。或者,如果使用Psake,则修改上面的脚本以返回您可以直接传递给Psake的hashtable。
这是可能的。以下是将系统属性传递到PSake脚本的示例:
& .\psake.ps1 -parameters @{build_number=%build.number%; personal_build=%build.is.personal%}
$build_number = %build.number%
< p > "%build.number%
" 部分将被替换为TeamCity提供的数据。我认为,它只在源代码脚本输入模式下起作用。