TeamCity 根据分支更改工件部署目录
TeamCity changing artifactory deploy directory based on branch
我想做到这一点,以便 TeamCity 将部署到一个文件夹以用于来自 master 的构建,以及用于来自其他任何构建的另一个文件夹。经过一番谷歌搜索后,我 运行 浏览了这篇文章:TeamCity, passing an id generated in one build step to a later build step
不幸的是,它似乎对我不起作用,我希望有人能告诉我原因。
然后我的 powershell 脚本如下所示:
if ("%teamcity.build.branch%".CompareTo("refs/heads/master")) {
Write-Host "##teamcity[setParameter name='artifactory_deploy_dir' value='test1']"
} else {
Write-Host "##teamcity[setParameter name='artifactory_deploy_dir' value='test2']"
}
Write-Host %artifactory_deploy_dir%
这是它的输出:
我宁愿通过命令行执行此操作,但我读到 echo 并没有真正起作用,这种说法是否有效?
谢谢
看起来上面提到的 powershell 脚本 运行ning 作为构建配置的最后一步。屏幕截图的第一行:
[16:12:57] 步骤 2/2:rrtwr (Powershell) (3s)
您需要在实际使用前设置artifactory_deploy_dir
的值。所以 powershell 应该 运行 作为第一步。您只需要重新排序构建步骤并确保 artifactory_deploy_dir
在使用前设置好。
DevOps 是正确的。这是他的回答:
“当您的 powershell 脚本由 TeamCity 生成时,变量值将使用 %artifactory_deploy_dir% 注入到该脚本中,因此此时这将是静态的。使用 set parameter 更新参数将起作用,但您只是写出该静态注入值。添加一个额外的构建步骤并将最后一行 (Write-Host %artifactory_deploy_dir%) 移至该步骤,您将看到该值已更新
此外,未测试 CompareTo() 方法的结果。如果字符串匹配区分大小写的比较,它将 return 0。"
我 运行 之后又进行了一个构建步骤并查询了该值,它确实发生了变化。我还继续将 if 语句更新为 "if ("%teamcity.build.branch%".equals("refs/heads/master"))," 因此该部分也能正常工作。
感谢 DevOps。如果您 post 我可以将其标记为 "answered" 的答案,我将完全将您的答案标记为答案而不是我的。
我想做到这一点,以便 TeamCity 将部署到一个文件夹以用于来自 master 的构建,以及用于来自其他任何构建的另一个文件夹。经过一番谷歌搜索后,我 运行 浏览了这篇文章:TeamCity, passing an id generated in one build step to a later build step
不幸的是,它似乎对我不起作用,我希望有人能告诉我原因。
然后我的 powershell 脚本如下所示:
if ("%teamcity.build.branch%".CompareTo("refs/heads/master")) {
Write-Host "##teamcity[setParameter name='artifactory_deploy_dir' value='test1']"
} else {
Write-Host "##teamcity[setParameter name='artifactory_deploy_dir' value='test2']"
}
Write-Host %artifactory_deploy_dir%
这是它的输出:
我宁愿通过命令行执行此操作,但我读到 echo 并没有真正起作用,这种说法是否有效?
谢谢
看起来上面提到的 powershell 脚本 运行ning 作为构建配置的最后一步。屏幕截图的第一行:
[16:12:57] 步骤 2/2:rrtwr (Powershell) (3s)
您需要在实际使用前设置artifactory_deploy_dir
的值。所以 powershell 应该 运行 作为第一步。您只需要重新排序构建步骤并确保 artifactory_deploy_dir
在使用前设置好。
DevOps 是正确的。这是他的回答:
“当您的 powershell 脚本由 TeamCity 生成时,变量值将使用 %artifactory_deploy_dir% 注入到该脚本中,因此此时这将是静态的。使用 set parameter 更新参数将起作用,但您只是写出该静态注入值。添加一个额外的构建步骤并将最后一行 (Write-Host %artifactory_deploy_dir%) 移至该步骤,您将看到该值已更新
此外,未测试 CompareTo() 方法的结果。如果字符串匹配区分大小写的比较,它将 return 0。"
我 运行 之后又进行了一个构建步骤并查询了该值,它确实发生了变化。我还继续将 if 语句更新为 "if ("%teamcity.build.branch%".equals("refs/heads/master"))," 因此该部分也能正常工作。
感谢 DevOps。如果您 post 我可以将其标记为 "answered" 的答案,我将完全将您的答案标记为答案而不是我的。