#node.js #typescript #octokit #probot
#node.js #машинопись #octokit #probot
Вопрос:
как мне получить всех рецензентов в запросе на извлечение из Probot
? Я использую typescript
. Я также слушаю pull_request
тип события в Probot. Я думаю, мне нужно позвонить context.github.pullRequests.getReview
, чтобы получить список рецензентов, но, поскольку я новичок в NodeJs
and typescript
, я не уверен, как вызвать приведенную ниже функцию. Какие-либо входные данные?
Кроме того, getReview
принимает параметр {owner:,repo:,number:, review_id:}
, в моем случае у меня просто есть pr_number
.
getReview(
params: Github.PullRequestsGetReviewParams,
callback?: Github.Callback<
Github.Response<Github.PullRequestsGetReviewResponse>
>
): Promise<Github.Response<Github.PullRequestsGetReviewResponse>>;
Комментарии:
1. Я пытался
context.github.pullRequests.listReviewRequests(context.issue());
, но это даст рецензентов, добавленных во время создания PR. Как мне получить всех рецензентов (добавленных во время создания PR, запрошенных самостоятельно, а также добавленных другим рецензентом и т. Д.)2. Я согласен, что это довольно запутанно. Я протестировал список отзывов на конечной точке запроса на извлечение, но в нем перечислены только запросы, а не фактически выполненные обзоры. Я бы рекомендовал обратиться в службу поддержки по этому поводу, это может быть ошибка или документация нуждается в обновлении
Ответ №1:
Как упоминалось в моем комментарии выше, список отзывов в запросе на извлечение возвращает не отзывы, а запросы на проверку.
Я не смог найти конечную точку REST API, но вместо этого вы можете отправить запрос GraphQL
query {
resource(url:"https://github.com/probot/probot/pull/870") {
... on PullRequest {
title
url
reviews(first: 100) {
nodes {
author {
login
}
}
}
}
}
}
для этого вы можете использовать context.graphql
метод. Смотрите https://github.com/octokit/graphql.js для его API. Убедитесь, что вы используете последнюю версию Probot (текущая версия 9.2.4)
Ответ №2:
Для нас это находится в requestedReviewer
объекте reviewRequests
using pullRequests
query.
Следует отметить, что рецензентом может быть User
или Team
поэтому нам нужно использовать оператор распространения ... on User/Team
, чтобы они получали разные поля.
query {
compass: repository(owner: "YourOrg", name: "YourRepo") {
pullRequests(states: [OPEN], last: 10) {
edges {
node {
title,
updatedAt,
url
mergeable
author {
login
},
reviewRequests(first: 10) {
nodes{
requestedReviewer{
... on User {
userName: name
login
}
... on Team {
teamName: name
}
},
}
}
}
}
}
}
}