来自 TeamCity 的 运行 TF.exe 失败。来自同一服务器的相同脚本并使用相同的用户作为代理成功
Running TF.exe from TeamCity fails. Same script from same server and using same user as agent succeeds
作为构建过程的一部分,我需要将一些代码推送到 TFS 服务器(TFS 源代码管理)。我正在使用 /Login: 参数和服务帐户的详细信息调用 TF.exe。如果我 运行 这个批处理文件在本地作为我的用户,或者在构建代理上作为本地系统(代理 运行 作为这个用户)它工作正常。凭据被接受。如果我将相同的脚本放入 TeamCity 的 "Custom Script" 构建步骤,脚本将失败并显示错误“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
如果您可以在代理计算机上手动成功执行 tf 命令,但在通过 TeamCity 构建时失败,请检查 TeamCity 的代理配置是否使用 运行 作为与本地计算机相同的帐户。您可以从以下几个方面进行故障排除:
安装后为代理选择服务帐户时,请检查您是否运行用户帐户下的TeamCity代理。
在 TeamCity web 中仔细检查 UI -> 代理选项卡 -> 单击代理 -> 代理参数选项卡 -> 环境变量选项卡 -> 确保域和用户名是与您登录TFS的域和用户名一致。
当 tf 命令使用 /login:username,password
选项时,请改用 domain\username
和登录密码。如
tf workspaces /collection:http://tfsServer:8080/tfs/DefaultCollection /login:"fareast\myname,password"
作为构建过程的一部分,我需要将一些代码推送到 TFS 服务器(TFS 源代码管理)。我正在使用 /Login: 参数和服务帐户的详细信息调用 TF.exe。如果我 运行 这个批处理文件在本地作为我的用户,或者在构建代理上作为本地系统(代理 运行 作为这个用户)它工作正常。凭据被接受。如果我将相同的脚本放入 TeamCity 的 "Custom Script" 构建步骤,脚本将失败并显示错误“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
如果您可以在代理计算机上手动成功执行 tf 命令,但在通过 TeamCity 构建时失败,请检查 TeamCity 的代理配置是否使用 运行 作为与本地计算机相同的帐户。您可以从以下几个方面进行故障排除:
安装后为代理选择服务帐户时,请检查您是否运行用户帐户下的TeamCity代理。
在 TeamCity web 中仔细检查 UI -> 代理选项卡 -> 单击代理 -> 代理参数选项卡 -> 环境变量选项卡 -> 确保域和用户名是与您登录TFS的域和用户名一致。
当 tf 命令使用
/login:username,password
选项时,请改用domain\username
和登录密码。如tf workspaces /collection:http://tfsServer:8080/tfs/DefaultCollection /login:"fareast\myname,password"