假设我有这 3 个阶段:开发、QC、生产。
我的要求是:
- 仅来自特定分支(release/*)的工件可以部署到 QC/Prod
- 所有分支的工件都可以部署到 Dev
我可以使用它来实现我想要的伪影过滤器对于“后期”触发版本,但我需要这个“仅手动”。
是否有一种解决方法可以让我控制/过滤哪些工件可用于特定阶段/环境的部署?
基本上,我需要相当于的 Azure DevOps八达通频道 https://octopus.com/docs/deployment-process/channels.
Update
我想我已经接近解决方案了。
在“预部署条件”中,我可以添加一个新的部署门来进行 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')' 的求值失败。
正如您所说,您可以使用舞台上的部署门来完成此操作。
从“项目设置”->“管道”->“服务连接”创建新的通用服务连接。
对于服务 URL 类似https://vsrm.dev.azure.com/{OrgName}/{ProjectName}/_apis
在您的舞台上,打开预部署条件
启用盖茨选项。
添加新的调用 REST API 门并将评估前的延迟设置为 0 分钟。
4.1 将连接类型设置为“通用”。
4.2 选择您在步骤 1 中创建的服务连接。
4.3 设置方法为GET。
4.4 设置URL后缀为/Release/releases/$(Release.ReleaseId)
4.5 在“高级”区域,将“完成事件”设置为“ApiResponse”。
4.6 在“高级”区域中,将成功标准设置为(或开始)
eq(root['artifacts'][0]['definitionReference']['branch']['id'],'refs/heads/master')
现在,如果您尝试部署不是来自 master 分支的工件,部署将会失败
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)