Возможно ли создать требуемый статус запроса на проверку / извлечение?

#azure-devops #azure-devops-rest-api

#azure-devops #azure-devops-rest-api

Вопрос:

https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull request statuses/create?view=azure-devops-rest-6.0

Я пробовал вышеупомянутый API, и проверка / статус необязательны, поэтому это не мешает пользователям выполнять запрос на извлечение. Как мне сделать статус обязательным?

Комментарии:

1. Могу ли я узнать, как сейчас решается проблема? Не стесняйтесь оставлять комментарии ниже, если у вас все еще есть какие-либо вопросы или загадки ниже.

Ответ №1:

Как документ, которым поделился Мэтт,

Политика состояния — предоставляет механизм для блокирования завершения запроса на извлечение, пока статус запроса на извлечение не укажет на успех.

Если вы хотите сделать этот статус обязательным для запроса на извлечение, вам необходимо добавить эту конфигурацию статуса в качестве политики статуса. Поскольку требуемая информация о статусе запроса на извлечение может считываться только из политики состояния.

Информация о состоянии конвейера была отправлена в запрос на извлечение после успешного запуска этого API. На данный момент вам необходимо выполнить еще один шаг, чтобы сделать этот статус обязательным.

Шаг 1:

Используйте приведенный ниже API для получения соответствующего идентификатора статуса:

 GET https://dev.azure.com/{org name}/{project}/_apis/policy/types?api-version=6.0
  

Затем вы найдете идентификатор статуса в теле ответа. Вставьте этот идентификатор в текстовый текст, он необходим для следующего шага.

введите описание изображения здесь

Шаг 2:

Запустите приведенный ниже 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"
      }
    ]
  }
}
  

Ответ №2:

Чтобы добавить блокировку в PR, вам также потребуется добавить политику статуса.

Политика состояния

Используя только статус, пользователям могут предоставляться сведения из внешней службы в рамках PR. Иногда достаточно поделиться информацией о PR, но в других случаях PR следует заблокировать от слияния до тех пор, пока не будут выполнены требования. Как и встроенные политики, политика состояния предоставляет внешним службам возможность блокировать завершение PR до тех пор, пока не будут выполнены требования. Если требуется политика, она должна пройти, чтобы выполнить запрос на извлечение. Если политика необязательна, она носит только информационный характер, и статус «успешно» не требуется для завершения запроса на извлечение.

Политики состояния настраиваются так же, как и другие политики филиала. При добавлении новой политики состояния необходимо ввести имя и жанр политики состояния. Если статус был опубликован ранее, вы можете выбрать его из списка; если это новая политика, вы можете ввести имя политики в формате жанр / название.