Azure DevOps Pipeline下载特定版本PyPI包失败求助
Azure DevOps DownloadPackage@1指定特定版本报404排查方案
你遇到的问题是:使用Azure DevOps Pipeline的DownloadPackage@1任务从Azure Artifacts下载PyPI包时,指定version: 'latest'可以成功,但指定特定版本(如1.0.0)时触发404错误。
原任务配置
- task: DownloadPackage@1 displayName: "[DOWNLOAD] - ${{ parameters.packageName }}-${{ parameters.packageVersion }}" inputs: packageType: pypi feed: "${{ parameters.feedName }}" view: ${{ parameters.viewName }} definition: ${{ parameters.packageName }} version: ${{ parameters.packageVersion }} downloadPath: $(System.ArtifactsDirectory)
错误信息
##[error]Fetching package metadata using url https://feeds.dev.azure.com/OrganizationName/_apis/Packaging/Feeds/FeedName%40View/Packages/PackageID/Versions/1.0.0 failed with error Error: 404: null
at D:\a_tasks\DownloadPackage_randomId\1.216.0\package.js:67:31
at processTicksAndRejections (node:internal/process/task_queues:96:5)
排查步骤
- 核对版本号的精确性:PyPI包的版本号可能包含后缀(如
1.0.0.post1、1.0.0.dev0),直接去Azure Artifacts对应Feed的Packages页面,找到目标包后查看Versions标签下的完整版本字符串,复制后替换到参数中,不要手动输入版本号。 - 检查视图的版本包含情况:你指定了
view参数,需确认该视图已包含目标版本1.0.0。进入Feed的Views设置页面,找到对应视图,检查其筛选规则是否包含该版本,或者手动将该版本添加到视图中。 - 验证包ID与definition参数的一致性:错误URL中的
PackageID必须和definition参数填写的packageName完全一致。注意Azure Artifacts对PyPI包名的大小写处理,即便PyPI规范是大小写不敏感,实际存储的包ID可能存在大小写差异,以Azure Artifacts中显示的包ID为准。 - 检查Pipeline服务账号的权限:确保运行Pipeline的服务账号对目标Feed的指定版本有读取权限。进入Feed的权限设置页面,确认该账号拥有“读取”权限,且权限范围覆盖目标版本。
- 调整参数语法:尝试移除
feed参数的引号,改为feed: ${{ parameters.feedName }},避免YAML字符串解析可能带来的异常。
内容的提问来源于stack exchange,提问作者MJ029
相关产品推荐
相关产品推荐

