Как мне получить всех рецензентов в PR в проботе GitHub

#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
                }
              },

            }
          }
        }
      }
    }
  }
}