从TeamCity运行TF.exe失败。来自同一服务器的相同脚本和使用相同用户的代理成功

时间:2018-05-07 14:22:59

标签: cmd azure-devops teamcity

作为构建过程的一部分,我需要将一些代码推送到TFS服务器(TFS源代码控制)。我正在使用/ Login:参数和服务帐户的详细信息调用TF.exe。如果我在本地运行此批处理文件作为我的用户,或在构建代理程序上作为本地系统运行(代理程序作为此用户运行),它可以正常工作。凭证被接受。如果我将相同的脚本放入TeamCity的“自定义脚本”构建步骤,脚本将失败并显示错误“TF30063:您无权访问[ServerName] \ tfs \ DefaultCollection。 有什么想法吗?

    mkdir Workspace
cd Workspace
tf workspace -new CodeWorkspace;username -noprompt -server:[ServerName]/tfs/DefaultCollection /login:"username,password"
tf workfold -map $/"Database Dependencies" . -workspace:CodeWorkspace -server:[ServerName]/tfs/DefaultCollection /login:"username,password"
tf get /force /all -recursive -noprompt  /login:"username,password"
tf checkout MercuryDatabaseShared.dacpac MercuryPortal.dacpac PhoenixDatabase.dacpac  /login:"username,password"
tf checkin MercuryDatabaseShared.dacpac MercuryPortal.dacpac PhoenixDatabase.dacpac  /login:"username,password" /noprompt /force /comment:"***FROM TEAMCITY - %build.number%***" 
tf workfold -unmap . -workspace:CodeWorkspace /login:"username,password"
tf workspace -delete CodeWorkspace -noprompt -server:[ServerName]/tfs/DefaultCollection  /login:"username,password"
cd ..
RMDIR /S /Q Workspace

1 个答案:

答案 0 :(得分:0)

如果您可以在代理计算机上成功执行tf命令但在TeamCity构建时失败,请检查TeamCity使用的代理配置是否与本地计算机运行相同。您可以通过以下方面进行故障排除:

  • 安装后为代理选择服务帐户时,请检查您是否在用户帐户下运行TeamCity代理。

    enter image description here

  • 在TeamCity网络用户界面中仔细检查 - >代理商标签 - >点击代理 - >代理参数选项卡 - >环境变量选项卡 - >确保域名和用户名与您登录TFS的域和用户名一致。

    enter image description here

    enter image description here

  • 对tf命令使用/login:username,password选项时,请改用domain\username和登录密码。如

    tf workspaces /collection:http://tfsServer:8080/tfs/DefaultCollection /login:"fareast\myname,password"