开发基础设施: 我在 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)"
因为您只使用查询: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