如何在Azure DevOps Server指定视图中自动包含所有公共npm包?
Azure DevOps Server npm Feed 上游包视图配置解决方案
自动将上游公共源包纳入指定视图
目前Azure DevOps Server没有直接配置上游源包自动进入指定视图的选项,但可以通过以下两种间接方式实现类似效果:
- 调整视图包含规则:进入Feed的视图管理页面,编辑
@release视图,在“包含包”规则里选择“来自上游源的包”,并指定对应的npmjs上游源。这样从该上游拉取的所有包会自动被@release视图包含,无需手动推广。 - 使用Pipeline自动化:创建Azure DevOps Pipeline,定期调用REST API查询Feed中来自上游源的未推广包,再批量将它们推广到
@release视图。核心调用的API为POST https://{instance}/{collection}/{project}/_apis/packaging/feeds/{feedId}/packagesbatch?api-version=7.1-preview.1,请求体中指定包ID、版本以及目标视图ID即可。
批量推广所有公共源包
如果需要一次性处理现有上游源包,可通过以下方法操作:
- Feed UI批量操作:进入Feed的包列表页面,用筛选器选择“来源:上游源”并指定npmjs源,勾选页面顶部的全选框(包数量较多时需滚动加载全部后再全选),接着点击“推广”按钮选择
@release视图完成批量操作。 - PowerShell脚本批量处理:编写PowerShell脚本调用Azure DevOps REST API实现批量推广,核心逻辑如下:
- 使用个人访问令牌(PAT)获取认证令牌
- 调用
GET https://{instance}/{collection}/{project}/_apis/packaging/feeds/{feedId}/packages?api-version=7.1-preview.1&sourceType=upstream&sourceId={upstreamSourceId}获取上游包列表 - 构造包含所有包ID和版本的批量推广请求体
- 调用批量推广API完成操作
内容的提问来源于stack exchange,提问作者AardVark71
相关产品推荐
相关产品推荐

