比方说,我有以下3个阶段:开发,质量控制,生产。
我的要求是:
对于“ After stage”触发的发布,我可以使用工件过滤器实现我想要的功能,但对于“仅限手册”,我需要它。
有没有一种解决方法,可以让我控制/过滤哪些工件可用于特定阶段/环境的部署?
基本上,我需要相当于Octopus Channels的Azure DevOps。
更新
我想我已经接近解决方案了。
在“部署前条件”中,我可以添加一个新的Deployment Gate来进行Rest API调用。
例如URL suffix=/Release/releases/76
现在,我只需要正确解析ApiResponse,因为下面的成功标准不起作用
eq(root['artifacts[0].definitionReference.branch.id'], 'refs/heads/master')
表达式'eq(root ['artifacts [0] .definitionReference.branch.id'],'refs / heads / master')'的求值失败。
答案 0 :(得分:2)
如您所说,您可以在舞台上使用“部署门”来完成此操作。
从项目设置->管道->服务连接创建新的通用服务连接。
对于服务URL,类似https://vsrm.dev.azure.com/{OrgName}/{ProjectName}/_apis
在您的舞台上,打开“部署前条件”
启用Gates选项。
添加一个新的Invoke REST API门,并将评估前的延迟设置为0分钟。
4.1将连接类型设置为“通用”。
4.2选择您在步骤1中创建的服务连接。
4.3将方法设置为GET。
4.4将URL后缀设置为/Release/releases/$(Release.ReleaseId)
4.5在“高级”区域,将“完成事件”设置为ApiResponse。
4.6在“高级”区域,将成功条件设置为(或startsWith)
eq(root['artifacts'][0]['definitionReference']['branch']['id'],'refs/heads/master')
现在,如果尝试不从master分支部署工件,则部署将失败
答案 1 :(得分:1)