求助: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
相关产品推荐
相关产品推荐

