问题描述
我创建了一个自定义工作项。有什么方法可以将此工作项与预先创建的 wiki 页面链接起来。我不想手动将它与工作项链接,只是在创建新工作项时自动链接。
解决方法
最方便的解决方法是为您的工作项创建自定义字段。并创建一个规则来自动将wiki页面url设置为自定义字段的值。
在此处查看教程以Add a custom field。
此处勾选Add a rule to a work item type,在创建工作项时触发,并将wiki url设置为自定义字段值。
还有另一种使用 azure 管道和 rest api 的解决方法。
请检查以下步骤:
1、创建由Work item created
事件触发的web hook
在创建 webhook 时,您需要提供以下信息:
-
请求网址 -
https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
-
秘密 - 这是可选的。如果您需要保护 JSON 负载,请提供 Secret 值
2、创建一个新的“传入 Webhook”service connection。
- Webhook 名称:Webhook 的名称应与在您的外部服务中创建的 Webhook 匹配。
3、创建一个yaml pipeline。
在yaml管道中添加服务连接资源见下图:
resources:
webhooks:
- webhook: MyWebhookTrigger
connection: MyWebhookConnection #the name of the Incoming Webhook service connection created in above step.
在您的管道中添加脚本任务以调用 work item update rest api. 参见以下脚本:
steps:
- powershell: |
$workitemId= ${{ parameters.MyWebhookTrigger.resource.id}}
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/wit/workitems/$($workitemId)?api-version=6.1-preview.3"
$body ='
[
{
"op": "add","path": "/relations/-","value": {
"rel": "ArtifactLink","url": "vstfs:///Wiki/WikiPage/{projectName}/{wikiName}/{wikiPage}","attributes": {
"name": "Wiki Page"
}
}
}
]'
Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $(system.accesstoken)"} -ContentType "application/json-patch+json" -Method patch -body $body
请查看this document了解更多信息。
以上步骤实际上做了以下事情:
新建工作项-->自动触发Azure管道-->Azure管道运行脚本调用rest api将wiki页面添加到工作项中。