Azure devops 是否可以创建所需的检查/拉动请求状态?

Azure devops 是否可以创建所需的检查/拉动请求状态?,azure-devops,azure-devops-rest-api,Azure Devops,Azure Devops Rest Api,我已经尝试过上面的API,检查/状态是可选的,因此它不会阻止用户完成拉取请求。如何使状态成为必需状态?要在PR上添加阻塞,还需要添加一个 状态策略 仅使用状态,就可以提供来自外部服务的详细信息 为用户提供公关体验。有时候,分享信息 关于PR是所有必要的,但在其他情况下,PRs应该是 在满足要求之前阻止合并。就像盒子里的一样 策略,状态策略为外部服务提供了 阻止PR完成,直到满足要求。如果政策是 如果需要,则必须通过才能完成拉动请求。如果 策略是可选的,仅供参考,状态为 完成拉取请求不需要成功 状


我已经尝试过上面的API,检查/状态是可选的,因此它不会阻止用户完成拉取请求。如何使状态成为必需状态?

要在PR上添加阻塞,还需要添加一个

状态策略

仅使用状态,就可以提供来自外部服务的详细信息 为用户提供公关体验。有时候,分享信息 关于PR是所有必要的,但在其他情况下,PRs应该是 在满足要求之前阻止合并。就像盒子里的一样 策略,状态策略为外部服务提供了 阻止PR完成,直到满足要求。如果政策是 如果需要,则必须通过才能完成拉动请求。如果 策略是可选的,仅供参考,状态为 完成拉取请求不需要成功

状态策略的配置与其他分支策略相同。什么时候 添加新的状态策略、状态策略的名称和类型 必须输入。如果之前已发布状态,则可以选择 从列表中删除它;如果是新策略,您可以键入 策略的格式为“类型/名称”


作为Matt共享的文档

状态策略-提供阻止请求完成的机制 直到拉动请求状态指示成功

如果您希望将此状态设置为强制请求所需的,则需要将此状态配置添加为状态策略。因为拉取请求所需的状态信息只能从状态策略中读取

成功运行此操作后,管道状态信息已发布到请求中。此时,您需要执行另一个步骤,使此状态为“必需”

步骤1:

使用下面的命令获取相应的状态id

GET https://dev.azure.com/{org name}/{project}/_apis/policy/types?api-version=6.0
然后您将从响应正文中找到状态id。将此id粘贴到txt中,这是下一步所必需的

第二步:

运行以下api以使您先前添加的状态成为必需状态:

POST https://dev.azure.com/{org name}/{repo name}/_apis/policy/Configurations?api-version=5.0
请求机构:

{
  "type": {
    "id": "{xxxx}" \\Put the **Status id** you copied in above step
  },
  "isBlocking": true, \\ IMPORTANT! Please set it to **true** since **false** means it is opitional
  "isEnabled": true,  \\Enable this for pull request
  "settings": {
    "invalidateOnSourceUpdate": false,
    "statusName": "APIStatus", \\Specify the status name you used while you create a status
    "statusGenre": "vsts-rm",  \\Same as above
    "scope": [
      {
        "repositoryId": "2fe327b4-66f5-4ce3-9227-dfd2ec80af1c", \\Specify this policy would apply to
        "refName": "refs/heads/master",  
        "matchKind": "Exact"
      }
    ]
  }
}

我可以知道现在的情况吗?如果您在下面还有任何问题或困惑,请随时在下面留下评论。