Azure DevOps Pipeline未使用Visual Studio Marketplace中自定义任务更新版本的问题排查
你已经做了不少尝试却仍遇到版本不一致的问题,我来梳理几个容易遗漏的排查点:
检查Pipeline YAML中的任务版本指定
很多时候我们会在YAML里硬编码任务的版本号,比如:task: MyCustomTask@0.0.23这种情况下,即使组织里安装了最新版本,Pipeline依然会使用指定的旧版本。你可以把版本号改成
@*来自动拉取已安装的最新版本,或者直接指定@0.0.25:task: MyCustomTask@0.0.25确认项目级扩展的安装状态
虽然你在组织级别安装了最新版0.0.25,但如果你的项目之前单独安装过该扩展的旧版本,项目会优先使用自身安装的版本。进入项目设置 → 扩展,找到你的自定义任务扩展,检查它的版本是否为0.0.25。如果是旧版本,点击更新;如果组织级已经覆盖,也可以直接卸载项目级的扩展,让项目继承组织的版本。清理自托管代理的任务缓存
如果你使用的是自托管代理,代理会缓存下载的任务包,旧版本可能还残存在缓存目录中。你可以:- 找到代理的工作目录(默认是
_work/_tasks) - 删除对应自定义任务的旧版本文件夹(比如
MyCustomTask_<任务ID>/0.0.23) - 重启代理,下次运行Pipeline时会重新下载最新版本的任务包
(如果用的是微软托管代理,每次运行都是全新环境,这个问题可以忽略)
- 找到代理的工作目录(默认是
验证组织级扩展的同步状态
有时候Marketplace的扩展更新后,组织的安装可能会有延迟,或者需要手动触发更新。进入组织设置 → 扩展,找到你的自定义任务扩展,确认显示的版本确实是0.0.25。如果有“更新”按钮,点击它手动同步最新版本。另外还要确保该扩展的目标受众包含你的组织,没有权限限制。检查任务ID是否一致
虽然概率较低,但如果重新发布扩展时不小心修改了任务的唯一ID,Pipeline里引用的旧ID对应的还是旧版本任务。你可以对比Marketplace上任务的ID和Pipeline YAML中的任务ID是否一致,确保引用的是同一个任务。
先从YAML版本指定和项目级扩展这两个最常见的点排查,应该能解决大部分问题。
内容的提问来源于stack exchange,提问作者sam

