Azure DevOps 2019 如何通过SQL表查询所有发布Copy File任务的目标服务器
Azure DevOps 2019 1.1 发布任务配置查询方案
可用的系统数据源
所有发布流水线的配置都存在DevOps配套的SQL Server实例的系统库中,不需要手动逐个打开项目、逐行翻发布定义做统计。
- 发布定义的基础信息存储在
[dbo].[tbl_Definition]表中,和发布阶段、任务配置通过[dbo].[tbl_DefinitionEnvironment]表关联 - 所有任务、步骤、阶段的参数没有拆成独立的关系表存储,全部以序列化JSON的形式存在对应表的配置字段里,查询时需要做JSON解析才能拿到具体参数值
目标服务器地址提取方法
- 先匹配所有文件拷贝类任务:
- 团队当前主用的标准Copy File任务,在配置里的固定任务唯一标识是
CopyFile,在JSON结构里匹配这个标识对应的节点,就是要找的目标任务 - 老版本遗留的、用机器组部署跑的文件拷贝任务,任务标识是
CopyFilesOnMachineGroup,这类任务的参数嵌在部署组阶段的嵌套配置里,需要单独做匹配,不要漏统
- 团队当前主用的标准Copy File任务,在配置里的固定任务唯一标识是
- 从匹配到的任务节点里,找参数字段
TargetFolder,这个字段存的就是类似\\servername\inetpub\site的UNC目标路径,也就是需要统计的目标服务器地址 - 特殊值处理:
- 如果读到的
TargetFolder值是变量占位格式(比如$(FrontEndShare)),需要关联系统里的流水线变量、部署组变量的存储表,把占位变量替换成实际配置的真实值,不能直接把占位字符串算成实际地址 - 2019 1.1的兼容提示:如果对接的SQL Server是2016及以上版本,可以直接用内置JSON函数高效提取;如果是更早的SQL版本,直接用字符串截取、正则匹配的方式定位
TargetFolder字段周围的内容即可,不需要额外装解析组件
- 如果读到的
实操注意事项
- 所有查询全程用只读权限执行,绝对不要尝试修改系统表的任何内容,避免误操作损坏现有流水线配置
- 最终拿到的地址列表统一做去重处理,同一个共享路径往往会被多个项目、多个发布流程重复引用
- 提前排查YAML格式的流水线:2019 1.1刚开始支持基础YAML发布,这类配置不在前面提到的发布定义JSON表中,内容存在代码仓库的流水线配置文件里,需要单独解析补全统计
内容的提问来源于stack exchange,提问作者Sherpa11
相关产品推荐
相关产品推荐

