cmd - 从 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
解决方案
如果您可以在代理机器上手动执行 tf 命令成功,但在 TeamCity 构建时失败,请检查 TeamCity 使用的代理配置是否以与本地机器相同的帐户运行。您可以从以下方面进行故障排除:
安装后为 Agent 选择 Service Account 时,请检查您是否在用户帐户下运行 TeamCity 代理。
仔细检查 TeamCity Web UI -> 代理选项卡 -> 单击代理 -> 代理参数选项卡 -> 环境变量选项卡 -> 确保域和用户名与您登录 TFS 的域和用户名一致。
使用
/login:username,password
tf 命令选项时,请使用domain\username
和 登录密码。如tf workspaces /collection:http://tfsServer:8080/tfs/DefaultCollection /login:"fareast\myname,password"
推荐阅读
- php - 如何从数组中选择值
- node.js - 带有nodejs服务器错误的Web应用程序上传到Heroku
- javascript - 发送未定义(建议命令)
- python - for-loop 在 python 中是如何工作的
- python - 根据标准匹配将数据从数据帧的早期部分传输到后面的部分
- arrays - 在 Excel 工作簿中搜索多个字符串
- linux - 当最后一个 Linux 终端退出/终止时,如何以编程方式触发操作?
- powerbi - 是否可以在 Power BI 中通过用户输入更改 OData 查询?
- rust - 具有多个生命周期参数的迭代器的 impl Iterator 失败
- google-drive-api - 在 Google 云端硬盘上找不到占用大量存储空间的文件