TFS/Azure DevOps中发布定义引用的Release Artifact来源位置是哪里?
核心结论
首先可以明确排除源代码管理,发布定义不会主动拉取源代码生成构件,只会读取构建过程中正式发布的构件产出,具体拉取位置由你构建定义的构件发布配置决定:
- 如果你仅通过自定义脚本将构件复制到网络共享,未使用TFS官方的
发布构建构件(Publish Build Artifacts)任务:此时你配置的关联构建源无法自动识别到这些构件,需要你在发布流程中自行添加任务从网络共享拉取,来源就是你指定的共享路径 - 如果你同时使用了官方
发布构建构件任务,分两种情况:- 任务的发布类型选择
Server:构件会被上传存储到TFS的内容数据库中,发布定义创建版本时会直接从TFS服务端下载构件到发布代理的工作目录 - 任务的发布类型选择
File share:构件仅存储在你配置的网络共享路径中,发布定义会直接从该共享路径读取构件,不会经过TFS数据库存储
- 任务的发布类型选择
确认构件来源的操作方法
方法1:查看构建记录的构件信息
打开对应成功构建的详情页,点击顶部构件标签:
- 如果是Server类型构件,页面会展示构件列表,点击下载按钮直接从TFS服务端返回文件,不会显示共享路径
- 如果是File share类型构件,页面会直接展示对应的网络共享完整路径,点击可直接跳转访问共享目录
方法2:查看发布日志的下载记录
打开对应发布的详情页,点击「查看日志」,找到下载构件的步骤日志:
- Server类型构件的日志会明确标注
Downloading artifacts from TFS server类提示,以及TFS服务端的拉取地址记录 - File share类型构件的日志会直接显示读取的网络共享完整路径
补充说明
你提到的构建代理本地Build.ArtifactStagingDirectory路径确实可以排除,该目录是构建代理的本地工作目录,不同代理之间无法互相访问,且每次构建会清空,TFS发布流程不会访问该路径拉取构件。
内容的提问来源于stack exchange,提问作者Cragly
相关产品推荐
相关产品推荐

