如何在TFS 2015中创建构建定义将仓库文件复制到指定UNC路径?
Alright, let's walk through exactly how to set up a TFS 2015 build definition to copy your pre-compiled web files (no VS project required) to a specified UNC path. Here's a step-by-step solution that works reliably:
TFS 2015 复制预编译Web文件到UNC路径实现方案
1. 创建空白构建定义
- 打开TFS 2015 Web界面,进入你的团队项目,切换到Build选项卡
- 点击New,选择Empty模板(因为咱们不需要VS项目的编译流程),给这个构建定义起个直观的名字,比如"Deploy Pre-compiled Web Files to UNC"
2. 配置源代码拉取
- 切换到Repository选项卡,确认你的代码仓库(TFVC或Git)已正确关联,指定要拉取的目标分支
- 回到Build选项卡,默认会有一个"Get sources"步骤,检查它的配置:TFVC要确认工作区映射正确,Git要确保分支和路径设置无误,这一步是为了把仓库里的Web文件拉到构建代理的本地目录
3. 添加文件复制步骤
- 点击Add build step,在Utility分类里找到Copy Files步骤,添加到构建流程中
- 配置这个步骤的关键参数:
- Source Folder:填写仓库里预编译Web文件的根路径,比如
$(Build.SourcesDirectory)\PublishedWeb(如果文件直接在仓库根目录,就填$(Build.SourcesDirectory)) - Contents:输入
**\*,表示复制所有文件和子文件夹;如果有需要排除的文件,可追加!**\temp\*这样的规则 - Target Folder:直接填写你的UNC路径,比如
\\fileserver\webdeploy\myapp - 一定要勾选Copy recursively,确保子目录里的文件也能被复制过去
- Source Folder:填写仓库里预编译Web文件的根路径,比如
4. 关键:配置构建代理权限
- 这一步最容易踩坑!因为构建代理是用服务账号运行的,这个账号必须拥有目标UNC路径的读写权限
- 找到你的TFS构建代理所在的服务器,打开服务管理器,找到"Visual Studio Team Foundation Build Service",查看它的登录账号
- 联系运维人员,给这个账号添加目标UNC共享文件夹的权限(至少需要读取、写入、修改权限)
5. 测试构建
- 保存构建定义,点击Queue build,选择对应的代理队列
- 构建完成后,直接去UNC路径检查文件是否完整复制
- 如果出现"访问被拒绝"的错误,回到步骤4确认代理账号的权限是否配置到位
备选方案:用PowerShell脚本替代
如果Copy Files步骤遇到兼容性问题,也可以用PowerShell脚本实现:
- 添加PowerShell步骤(同样在Utility分类)
- 粘贴以下脚本(根据你的实际路径修改):
# 定义源路径和目标UNC路径 $sourceDir = "$(Build.SourcesDirectory)\PublishedWeb" $targetDir = "\\fileserver\webdeploy\myapp" # 确保目标目录存在,不存在则创建 if (-not (Test-Path -Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir | Out-Null } # 递归复制所有文件和文件夹,覆盖已存在的文件 Copy-Item -Path "$sourceDir\*" -Destination $targetDir -Recurse -Force
- 同样要确保代理账号拥有UNC路径的权限
小提示:TFS 2015的构建代理默认以服务身份运行,不要用个人账号去测试权限,一定要用代理的服务账号验证访问UNC路径的权限哦。
内容的提问来源于stack exchange,提问作者user3143845
相关产品推荐
相关产品推荐

