You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps Pipeline任务中运行WIQL查询?Linux代理Shell示例

在Linux代理的Azure DevOps Pipeline中用Shell调用REST API查询工作项

核心结论

完全可以用Shell(如Bash)替代PowerShell在Linux代理上实现工作项查询,无需依赖PowerShell环境。

实现步骤与示例

1. 配置Pipeline权限与变量

Pipeline运行时可使用内置的System.AccessToken临时令牌,它默认具备对应项目的工作项访问权限(前提是Pipeline所属服务账号有读取权限)。需在YAML中传递该变量:

steps:
  - bash: |
      # 后续Shell脚本内容
    env:
      AZURE_DEVOPS_TOKEN: $(System.AccessToken)

2. WIQL查询的Shell脚本示例

以下是完整Bash脚本,用于查询项目中状态为"Active"的用户故事:

#!/bin/bash

# 替换为你的组织和项目名
ORGANIZATION="your-org-name"
PROJECT="your-project-name"

# 定义WIQL查询语句
WIQL_QUERY="SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.WorkItemType] = 'User Story' AND [System.State] = 'Active'"

# 调用Azure DevOps REST API
RESPONSE=$(curl -s -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Basic $(echo -n ":$AZURE_DEVOPS_TOKEN" | base64)" \
  "https://dev.azure.com/$ORGANIZATION/$PROJECT/_apis/wit/wiql?api-version=7.1-preview.2" \
  -d "{\"query\": \"$WIQL_QUERY\"}")

# 解析并格式化输出结果
echo "=== 活跃用户故事查询结果 ==="
echo "$RESPONSE" | jq -r '.workItems[] | "ID: \(.id) | 标题: \(.url | split("/")[-1])"'

3. 完整Pipeline YAML示例

将脚本整合到Pipeline中:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest' # Linux代理环境

steps:
  - bash: |
      ORGANIZATION="your-org-name"
      PROJECT="your-project-name"
      WIQL_QUERY="SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.WorkItemType] = 'User Story' AND [System.State] = 'Active'"

      RESPONSE=$(curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Basic $(echo -n ":$AZURE_DEVOPS_TOKEN" | base64)" \
        "https://dev.azure.com/$ORGANIZATION/$PROJECT/_apis/wit/wiql?api-version=7.1-preview.2" \
        -d "{\"query\": \"$WIQL_QUERY\"}")

      echo "=== 查询结果 ==="
      echo "$RESPONSE" | jq '.workItems[]'
    env:
      AZURE_DEVOPS_TOKEN: $(System.AccessToken)
    displayName: 'Shell脚本查询工作项'

关键注意事项

  • 权限验证:确保Pipeline服务账号(通常为Project Collection Build Service)拥有工作项读取权限,否则会返回403错误。
  • jq工具依赖:Linux代理默认预装jq用于JSON解析,若为自定义代理,需先执行apt-get install jq安装。
  • API版本:示例使用预览版7.1-preview.2,可替换为稳定版(如7.0)。
  • 令牌编码:Basic认证需将:+令牌做base64编码,因Azure DevOps允许用户名留空,前缀为冒号。

内容的提问来源于stack exchange,提问作者Stack_IQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:05:31