Azure Devops 获取包工作项状态

问题描述 投票:0回答:1

开发基础设施: 我在 Azure Devops 工作项中使用 Powershell 脚本创建一个包工作项,并在成功完成部署后将其更新为已完成。

问题: 如何查询包裹状态? 我尝试使用下面的 powershell,它查询 exisitng 包但无法找到获取包的 system.state 的逻辑

我的Powershell:

function checkPackagestate{
    Param(
        [Parameter(Mandatory)]
        [string[]]
        $package,
        [Parameter(Mandatory)]
        [string[]]
        $secret,
        [Parameter(Mandatory)]
        [string[]]
        $DevopsProject

    )
    $header = prepareHeader $secret
    $query = "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '$DevopsProject' AND [System.WorkItemType] = 'Package' AND [System.Title] = '$PackageName' "
    $json = @{ query = $query }
    $jsonBody = ConvertTo-Json $json
    $url  = "http://10.0.0.5/Test/$DevopsProject/_apis/wit/wiql?api-version=6.0"
    $output = Invoke-RestMethod -Uri $url -Method Post -ContentType "application/json" -Headers $header -Body $jsonbody
    return $output
    
}

我的管道:

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
        $test = checkPackagestate "$PackageName" "$(secret)" $(DevopsProject)" 
powershell azure-devops tfs tfs-workitem
1个回答
0
投票

因为您只使用查询:Wiql 查询 它返回一组工作项 ID:

{
  "queryType": "flat",
  "asOf": "2014-12-29T20:49:34.617Z",
  "columns": [
    {
      "referenceName": "System.Id",
      ....
    },
    ...
  ],
  "sortColumns": [
    {
      "field": {
        "referenceName": "Microsoft.VSTS.Common.Priority",
        ....
      },
      "descending": false
    },
    ...
  ],
  "workItems": [
    {
      "id": 300,
      "url": "https://dev.azure.com/fabrikam/_apis/wit/workItems/300"
    },
    {
      "id": 299,
      "url": "https://dev.azure.com/fabrikam/_apis/wit/workItems/299"
    },
    {
      "id": 298,
      "url": "https://dev.azure.com/fabrikam/_apis/wit/workItems/298"
    },
    .....
  ]
}

然后您必须使用每个

id
来获取工作项详细信息:Get Work Item

© www.soinside.com 2019 - 2024. All rights reserved.