我正在设置概念验证,通过在 Postman 中执行以下 Azure DevOps API 命令来监视某些 Azure DevOps 构建代理的状态。
然后,我使用以下 Postman 命令提取每个代理的
Name
和 Hosted
状态,然后将结果输出设置为 Postman 集合变量,如下图所示。
let jsonData = pm.response.json().value
jsonData.forEach((item, index) => {
pm.collectionVariables.set(item["name"], item["isHosted"])
})
最后,我接下来要做的就是使用 Postman 中的自定义 Webhook 将整个 Collection 变量集 POST 到即时消息服务,例如 Flock(甚至 Slack)。我已成功使用另一个 Postman API 命令来设置此自定义 Webhook,如下所示。
但是,如上所示,我只能通过注释掉除一个代理引用之外的所有代理引用,一次成功地将代理状态发布到 Flock 一个。我需要能够:
关于如何实现这一目标有什么建议吗?
根据您的要求,我建议您可以考虑将 postman.setNextRequest() 添加到 foreach 脚本中,以便在一次运行中多次发送请求。
步骤如下:
Step1:在Postman集合中创建Get Pools请求和Post Flock请求。
步骤2:在获取池请求中添加以下脚本示例:
let jsonData = pm.response.json().value
jsonData.forEach((item, index) => {
console.log(item["name"]);
pm.collectionVariables.set("name", item["name"]);
pm.collectionVariables.set(item["name"], item["isHosted"]);
postman.setNextRequest('Post Flock');
})
此步骤将设置两个变量:基于代理池名称的池名称,并设置预期的池名称和 ishosted 值。
Step3:在Post Flock请求中使用该变量。
例如:
{
"text": "Agent Status - {{{{name}}}}"
}
{{name}} 代表代理池名称。 {{{{name}}}} 代表代理池的 ishosted 值。
Step4:您可以使用Collection Runner来运行脚本。
更详细的信息,您可以参考此文档:自定义集合运行中的请求顺序
postman.setNextRequest() 旨在使用 Collection Runner、Postman CLI 或 Newman 运行集合时使用。当您使用发送运行请求时,它不起作用。