一种将 TeamCity 构建产品提交给 Perforce 的方法?
A way to commit TeamCity build products to Perforce?
构建工作正常,但最后一件事让我感到困惑...如何将构建产品提交回 P4 存储库?似乎没有预定义的设置或构建 step/feature?
我不得不为此编写自己的脚本,这对我来说超级奇怪...这是什么要求,我如何使我的预定义 P4 工作区提交二进制文件?
好的,首先我意识到 "artifacts" 东西是在部署即用型应用程序时使用的东西,而不仅仅是二进制文件。
跳过了部署工件,只是添加了一个新的构建 PowerShell 构建步骤。它还不完美,以明文形式存储密码,但这基本上可以工作。在每个命令中跳过 P4 "login" 时无法强制工作。 P4 回复消息 "Password was invalid or unset".
$user ="MyUser"
$workspace ="MyWorkspace"
$pswd ="MyPassword"
# update workspace root - use human-friendly workspace name instead of TeamCity automatically generated workspace
$p4Client = p4 -c $workspace -u $user -P $pswd -p localhost:1666 client -o $workspace
$p4Client = $p4Client -replace '^Root:.+$', "Root: %teamcity.build.checkoutDir%"
$p4Client | p4 -c $workspace -u $user -P $pswd -p localhost:1666 client -i
# submit build products
p4 -c $workspace -u $user -P $pswd -p localhost:1666 reconcile _a -e -c default "//..."
p4 -c $workspace -u $user -P $pswd -p localhost:1666 submit -d "build %build.number%"
构建工作正常,但最后一件事让我感到困惑...如何将构建产品提交回 P4 存储库?似乎没有预定义的设置或构建 step/feature?
我不得不为此编写自己的脚本,这对我来说超级奇怪...这是什么要求,我如何使我的预定义 P4 工作区提交二进制文件?
好的,首先我意识到 "artifacts" 东西是在部署即用型应用程序时使用的东西,而不仅仅是二进制文件。
跳过了部署工件,只是添加了一个新的构建 PowerShell 构建步骤。它还不完美,以明文形式存储密码,但这基本上可以工作。在每个命令中跳过 P4 "login" 时无法强制工作。 P4 回复消息 "Password was invalid or unset".
$user ="MyUser"
$workspace ="MyWorkspace"
$pswd ="MyPassword"
# update workspace root - use human-friendly workspace name instead of TeamCity automatically generated workspace
$p4Client = p4 -c $workspace -u $user -P $pswd -p localhost:1666 client -o $workspace
$p4Client = $p4Client -replace '^Root:.+$', "Root: %teamcity.build.checkoutDir%"
$p4Client | p4 -c $workspace -u $user -P $pswd -p localhost:1666 client -i
# submit build products
p4 -c $workspace -u $user -P $pswd -p localhost:1666 reconcile _a -e -c default "//..."
p4 -c $workspace -u $user -P $pswd -p localhost:1666 submit -d "build %build.number%"