首页 > 解决方案 > 从 TeamCity 运行 TF.exe 失败。来自同一服务器的相同脚本并使用相同的用户作为代理成功

问题描述

作为构建过程的一部分,我需要将一些代码推送到 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

标签: cmdazure-devopsteamcity

解决方案


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

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

    在此处输入图像描述

  • 仔细检查 TeamCity Web UI -> 代理选项卡 -> 单击代理 -> 代理参数选项卡 -> 环境变量选项卡 -> 确保域和用户名与您登录 TFS 的域和用户名一致。

    在此处输入图像描述

    在此处输入图像描述

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

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

推荐阅读