azure 如何自动更改工作项状态

6pp0gazn  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(168)

我要创建规则如下:当自定义字段值设置为X时,将任务状态更改为新建。是否可以完成?
很难相信这是不可能的,但我找不到一种方法来做到这一点。

hi3rlvi2

hi3rlvi21#

默认自定义规则不支持更改状态。您可以参考两种解决方法。

变通办法1:

您可以自定义字段以决定是否更改状态,在字段更改时触发webhook,然后通过此webhook触发管道。在管道中,通过运行REST API工作项-更新来更改当前工作项的状态。
下面是详细的步骤。
1.在我的示例中定制一个名为“ChangeState”的字段,其定义如下:

1.按照此文档定义一个webhook资源来创建一个webhook和一个“传入的Webhook”服务连接。webhook的设置:

Trigger on this type of event设置为Work item updated,将Field设置为在第一步中创建的自定义字段。
1.将第二步创建的webhook设置为管道资源,运行REST API Work Items -Update更新工作项的状态,这里有YAML可供参考:

resources:
   webhooks:
     - webhook: ChangeWIState           ### Webhook alias
       connection: ChangeNameSC    ### Incoming webhook service connection

 pool:
   vmImage: ubuntu-latest

 steps:

 - task: PowerShell@2
   inputs:
     targetType: 'inline'
     script: |
       Write-Host ${{ parameters.ChangeWIState.resource.workItemId}}
       $token = "<your PAT>"
       $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
       $url="https://dev.azure.com/<org name>/_apis/wit/workitems/${{ parameters.ChangeWIState.resource.workItemId}}?api-version=7.0"
       $body = @'
       [
         {
           "op": "add",
           "path": "/fields/System.State",
           "value": "New"
         }
       ]
       '@
       $head = @{ Authorization =" Basic $token" }
       $response = Invoke-RestMethod -Uri $url -Method PATCH -Headers $head -Body $body -ContentType application/json-patch+json

“ChangeWISState”是我的webhook的名称,“ChangeNameSC”是我的服务连接的名称。
每当字段“ChangeState”发生更改时,都会触发管道运行REST API,将状态更改为new。

变通办法2:

可以使用此扩展名“Work item form one click actions
1.将操作设置为:

1.触发器设置如下:

当字段“Test”的值更改为“X”时,状态将更改为“New”。x1c4d 1x

相关问题