如何为Azure Pipeline私有制品生成公开访问URL
Azure DevOps 默认存在Pipeline关联容器里的构建制品,本身没开匿名访问的配置开关,你现在拿到的默认URL必须带有效身份凭证才能访问,不存在直接改个权限就把原链接变成公开地址的操作。要拿到公开可访问的下载链接,按需选下面三种落地方式就行:
方案1:转存到开了公共读权限的对象存储(长期公开场景首选)
在现有构建Pipeline最后加个文件复制任务,把构建出来的AzureFunctions压缩包,传到提前配好的、开了Blob级匿名读权限的对象存储容器里。传完生成的对象存储文件URL就是永久公开的,直接贴出去任何人都能下载,不需要登录。注意只给单个文件开读权限就行,别给整个存储桶开列表权限,避免其他文件被随便遍历下载。方案2:上传到公开代码仓的Release资产
如果你的项目挂在公开代码仓下,构建完加个上传任务,把压缩包作为发布资产传到公开Release页面就行,生成的资产链接默认支持匿名访问,不用额外配权限。方案3:生成带时效的SAS授权链接(临时分享场景用)
要是不想转存制品,可以在Pipeline里调接口给目标制品生成指定有效期的SAS访问令牌,把令牌拼到原制品URL后面,在有效期内拿到链接的人都能直接下载,不用登Azure DevOps账号。缺点是链接到期就失效,要长期公开的话不适合用这个方法。
提醒:别白费功夫改Azure DevOps项目/组织的安全策略想开放默认制品的匿名访问,这类资源的访问控制是平台托管的,根本没给用户开放匿名访问的配置入口,所有公开访问需求要么转存要么做临时授权,没有捷径。
内容的提问来源于stack exchange,提问作者Jorge Freitas

