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

求助:Node.js中Azure Pipeline审批REST API的实现方案

Azure DevOps Pipeline审批功能的Node.js实现方案

由于azure-devops-node-api目前没有封装审批相关的REST接口,你可以直接通过HTTP请求库(比如axios)调用官方的REST接口来实现,具体步骤如下:

1. 准备必要的认证信息

需要生成Azure DevOps的个人访问令牌(PAT),权限需包含Release Management的批准权限,或者对应项目的相关操作权限。

2. 查询审批列表(对应Approvals - Query接口)

使用POST请求调用查询接口,获取待处理的审批项及对应的approvalId:

const axios = require('axios');

const orgName = '你的组织名';
const projectName = '你的项目名';
const pat = '你的PAT令牌';
const auth = Buffer.from(`:${pat}`).toString('base64');

async function getApprovals() {
  try {
    const response = await axios.post(
      `https://dev.azure.com/${orgName}/${projectName}/_apis/approvalsandchecks/approvals/query?api-version=7.0`,
      {
        // 可根据需求添加过滤条件,比如只查询待审批的项
        filter: {
          status: 'pending'
        }
      },
      {
        headers: {
          'Authorization': `Basic ${auth}`,
          'Content-Type': 'application/json'
        }
      }
    );
    // 返回的审批列表数据
    console.log('审批列表:', response.data.value);
    // 提取目标审批项的approvalId
    const approvalId = response.data.value[0].id;
    return approvalId;
  } catch (error) {
    console.error('查询审批失败:', error.response.data);
  }
}

// 调用查询函数
getApprovals();

3. 更新审批状态(对应Approvals - Update接口)

使用PATCH请求,传入approvalId来完成批准或拒绝操作:

async function updateApproval(approvalId, action = 'approve') {
  try {
    const status = action === 'approve' ? 'approved' : 'rejected';
    const response = await axios.patch(
      `https://dev.azure.com/${orgName}/${projectName}/_apis/approvalsandchecks/approvals/${approvalId}?api-version=7.0`,
      {
        status: status,
        comments: '通过自动化脚本完成审批' // 可选的审批备注
      },
      {
        headers: {
          'Authorization': `Basic ${auth}`,
          'Content-Type': 'application/json-patch+json'
        }
      }
    );
    console.log('审批操作完成:', response.data);
  } catch (error) {
    console.error('更新审批失败:', error.response.data);
  }
}

// 调用更新函数,传入获取到的approvalId
// getApprovals().then(id => updateApproval(id));

注意事项

  • 确保PAT的权限足够,避免出现403权限错误
  • 可以根据业务需求调整查询接口的过滤条件,比如按发布管道ID、阶段名称等精准筛选
  • 接口的api-version可以根据需要调整为最新版本,当前示例使用7.0版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:05:08