作为构建过程的一部分,我需要将一些代码推送到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
答案 0 :(得分:0)
如果您可以在代理计算机上成功执行tf命令但在TeamCity构建时失败,请检查TeamCity使用的代理配置是否与本地计算机运行相同。您可以通过以下方面进行故障排除:
安装后为代理选择服务帐户时,请检查您是否在用户帐户下运行TeamCity代理。
在TeamCity网络用户界面中仔细检查 - >代理商标签 - >点击代理 - >代理参数选项卡 - >环境变量选项卡 - >确保域名和用户名与您登录TFS的域和用户名一致。
对tf命令使用/login:username,password
选项时,请改用domain\username
和登录密码。如
tf workspaces /collection:http://tfsServer:8080/tfs/DefaultCollection /login:"fareast\myname,password"