Azure DevOps中跨项目自动创建关联用户故事的实现方案咨询
Azure DevOps中跨项目自动创建关联用户故事的实现方案咨询
我之前帮不少团队解决过类似的跨项目协作自动化需求,结合你的场景——同一个Azure DevOps组织下,当Project1里新增了关联到UserStory X的用户故事(需要Team2介入处理),要自动在Team2的Project2中创建对应的关联用户故事,咱们可以通过Service Hooks + 自定义服务接口的组合方式来实现,具体步骤和细节拆解如下:
核心实现思路
当Project1中的目标用户故事(需要Team2介入的新US)被创建并关联到UserStory X时,通过Azure DevOps的Service Hooks监听「工作项更新/创建」事件,触发预先部署的外部服务端点;该服务解析事件 payload 中的关键信息,调用Azure DevOps REST API在Project2中创建镜像的用户故事,并维护好跨项目的关联关系。
具体操作步骤
1. 配置Project1的Service Hooks触发器
- 进入Project1的「项目设置」→「服务挂钩」,点击「创建订阅」
- 选择触发事件类型:工作项更新(如果是直接创建关联US,也可以选「工作项创建」,但结合关联动作,选更新更精准)
- 设置筛选条件,确保只触发符合需求的场景:
- 工作项类型 = 用户故事
- 链接类型新增了「相关」(或你团队使用的特定关联类型)
- 可选:添加团队筛选,比如仅当US分配给Team1且需要Team2介入时触发
- 选择目标服务为「Web Hooks」,填写你部署的外部服务端点URL,配置请求方式为POST,按需添加自定义头信息(比如用于身份验证的密钥)
2. 编写外部服务端点(处理事件并创建跨项目US)
你可以用Azure Function、ASP.NET Core API或者其他轻量服务来实现这个端点,核心逻辑包括:
- 接收Service Hooks发送的JSON payload,解析出关键信息:
- 原关联用户故事(UserStory X)的ID、标题、描述
- 新创建的需要Team2处理的US的标题、描述、优先级等字段
- 使用Azure DevOps PAT(个人访问令牌)调用REST API创建Project2的用户故事:
请求体示例(按需调整字段):POST https://dev.azure.com/{你的组织名}/{Project2}/_apis/wit/workitems/$User Story?api-version=7.1-preview.3 Content-Type: application/json-patch+json[ { "op": "add", "path": "/fields/System.Title", "value": "[关联Project1-US] {原US标题}" }, { "op": "add", "path": "/fields/System.Description", "value": "{原US描述}\n\n关联自Project1的UserStory X(ID: {X的ID})" }, { "op": "add", "path": "/fields/System.AssignedTo", "value": "Team2的默认负责人" } ] - (可选)创建完成后,调用API给Project2的新US添加链接,关联回Project1的原US,实现双向追踪:
请求体示例:PATCH https://dev.azure.com/{你的组织名}/{Project2}/_apis/wit/workitems/{新US ID}?api-version=7.1-preview.3 Content-Type: application/json-patch+json[ { "op": "add", "path": "/relations/-", "value": { "rel": "System.LinkTypes.Related", "url": "https://dev.azure.com/{组织名}/_apis/wit/workitems/{Project1中原US的ID}", "attributes": { "comment": "自动关联自Project1的协作需求" } } } ]
3. 权限配置要点
- 创建用于API调用的PAT:在Azure DevOps个人资料→「安全」→「个人访问令牌」,勾选「工作项」的「读取」和「写入」权限,以及对应项目的访问权限
- 确保外部服务能访问Azure DevOps的API端点,避免网络防火墙限制
4. 测试与调试
- 手动在Project1创建一个关联到UserStory X的新US,触发Service Hooks
- 检查外部服务的日志,确认事件是否被正确接收、解析
- 查看Project2是否生成了对应的用户故事,关联关系是否正常
- 若出现触发异常,调整Service Hooks的筛选条件,或者检查API调用的权限、参数是否正确
额外注意事项
- 避免重复创建:在外部服务中记录已处理的工作项ID,或者通过Azure DevOps的工作项标签/自定义字段标记已同步,防止重复触发时生成重复US
- 异常处理:添加API调用失败的重试机制,或者配置告警通知,确保同步失败时能及时发现
- 字段映射:根据两个项目的用户故事字段差异,调整API请求体中的字段映射,确保关键信息完整同步
备注:内容来源于stack exchange,提问作者rewa
相关产品推荐
相关产品推荐

