0

我有以下 powershell 脚本:

$triggerBy = "Finish Build Trigger; Aed / My Application / Service / My Application Service, build #4.1.2.41"
$buildId = $triggerBy -replace 'Finish Build Trigger; ', '' -replace ', build #.*', '' -replace '( \/ )', '_' -replace ' ', ''

当它运行时,$buildId设置为Aed_MyApplication_Service_MyApplicationService

然后我想获取变量的值%dep.Aed_MyApplication_Service_MyApplicationService.build.number%。但我需要将值$buildId用于中间部分。

有没有办法说 $buildNumber =%dep.$buildId.build.number%并且 TeamCity 认识到$buildId应该在评估变量之前对其进行扩展?

4

1 回答 1

1

不,遗憾的是没有办法强迫 TeamCity 懒惰地评估构建。

如果这是一种$triggerBy“开关/案例”的选择,您可以创建一个构建步骤(在构建开始时),这将:

  • 测试您的计算$buildId是否为Aed_MyApplication_Service_MyApplicationService
  • if是的,以下内容应该使您能够%myDepBuildNumber%在接下来的构建步骤中使用:
echo "##teamcity[setParameter name='myDepBuildNumber' value='%dep.Aed_MyApplication_Service_MyApplicationService.build.number%']"
  • else没做什么。

对任何情况重复此if/ 。else$triggerBy

如果您收到 unset 错误%dep.Aed_MyApplication_Service_MyApplicationService.build.number%:设置此参数应该可以解决问题。(例如,如果您的构建和Aed_MyApplication_Service_MyApplicationService两者都属于Aed_MyApplication_Service则在此处声明参数)。

于 2021-04-22T11:37:02.393 回答