TFS 16环境下,如何手动上传Zip包至Azure发布位置?
解决方案
针对你使用TFS 16(Azure DevOps Server 2019)、需要手动上传本地带版本号Zip包的需求,有几个比存入Git仓库更合理的方案:
1. 用Azure Artifacts实现拖放式上传
这是最接近你想要的Dropbox/Google Drive无缝体验的方式:
- 打开项目的Artifacts模块,若没有现成的Feed,新建一个「通用类型」的Feed
- 进入该Feed后,点击页面右上角的「上传」按钮,直接将本地Zip包拖入即可,还能手动指定版本号
- 后续发布流水线可直接从这个Feed拉取该Zip包进行部署,完全无需将包存入Git仓库
2. 在发布管道中手动添加外部工件
无需依赖自动流水线,也能给发布管道关联手动上传的包:
- 新建一个空的发布管道,切换到「工件」标签页,点击「添加」
- 在弹出的选项中选择「通用包」,接着选择你的Artifacts Feed,或者直接选「手动上传」选项(TFS16里这个选项藏在下拉菜单中,仔细查找即可)
- 上传完成后,该Zip包会成为发布管道的可用工件,直接用于部署即可
3. 借助PowerShell脚本通过REST API上传
如果需要批量或一键上传的灵活操作,可以用TFS的REST API实现:
- 先在TFS中生成个人访问令牌(PAT),权限勾选「工件(读/写)」和「发布(读/写)」
- 使用以下PowerShell脚本完成上传(替换为你的服务器地址、项目信息、PAT和本地文件路径):
$pat = "你的PAT令牌" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($pat)")) $feedUrl = "http://你的TFS服务器地址/DefaultCollection/你的项目名/_apis/packaging/feeds/你的FeedID/packages?api-version=5.0-preview.1" $headers = @{Authorization = "Basic $base64AuthInfo"} Invoke-RestMethod -Uri $feedUrl -Method Post -Headers $headers -InFile "C:\本地路径\你的包名.zip" -ContentType "application/zip"
你之前没找到手动上传入口,是因为TFS16的该功能不在发布设置主页面,而是藏在Artifacts模块或发布管道的工件添加流程中,按上述步骤操作即可找到。
内容的提问来源于stack exchange,提问作者voloved
相关产品推荐
相关产品推荐

