풀 리퀘스트에 연결된 모든 이슈를 얻는 방법
소개
Github API는 프로그래밍 방식으로 git 내에서 데이터에 액세스하고 데이터를 변경할 수 있는 유연성을 제공합니다. Github는 개발자에게 기존REST API과 보다 현대적인GraphQL API 상호 작용을 모두 제공합니다. 그러나 GraphQL API의 향상된 유연성으로 인해 REST에서 사용할 수 없는 일부 기능이 GraphQL에서 사용할 수 있습니다.
그래서 오늘은 Github의 GraphQL API를 사용하여 풀 리퀘스트에 연결된 모든 이슈를 찾는 방법을 살펴보겠습니다.
참고: 이 튜토리얼에서는 노드를 사용합니다. TLDR을 보려면 아래로 스크롤하십시오.
전제 조건
repo
, workflow
, user
쿼리
query getLinkedIssues(
$repository: String!,
$organizationOrOwner: String!,
$prNumber: Int!,
$maxIssues: Int!,
) {
repository(number: $prNumber) {
closingIssuesReference(first: $maxIssues) {
nodes {
number
body
title
}
}
}
}
쿼리 분석
query getLinkedIssues(
/*
These are the params (or data points) needed to run the query
Params with a bang operator (!) are required
It includes:
- repository: name of the repository you're accessing
- owner: name of the owner of the repository
- prNumber: the number of the pull request who's issues you need
- maxIssues: the maximum number of issues that you would like returned
*/
$repository: String!,
$owner: String!,
$prNumber: Int!,
$maxIssues: Int!,
) {
repository(number: $prNumber) {
// All issues referenced in the PR with a closing prefix
// Examples here: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
closingIssuesReference(first: $maxIssues) {
// Nodes represent the individual issues
nodes {
// The data we want returned for each issue
// Check out the Github GraphQL Explorer for a full list
// https://docs.github.com/en/graphql/overview/explorer
number
body
title
}
}
}
}
요청하기
Github의 GraphQL 클라이언트와 상호 작용할 수 있는 기능을 제공하는 Github API 클라이언트와 상호 작용하는 데 사용할 수 있는 항목a few libraries이 있습니다. 이 자습서의 목적을 위해 octokit의 노드 기반 클라이언트를 사용하는 한 가지 예를 제공합니다.
반환하는 데이터 유형을 더 많이 제어하려면 Github's GraphQL Explorer 을 확인하십시오. 전체 API에 대한 느낌을 얻을 수 있도록 쿼리를 연습(및 실행)할 수 있는 훌륭한 놀이터입니다.
import { graphql } from "@octokit/graphql";
const linkedIssuesQuery = `
query getLinkedIssues(
$repository: String!,
$owner: String!,
$prNumber: Int!,
$maxIssues: Int!,
) {
repository(number: $prNumber) {
closingIssuesReference(first: $maxIssues) {
nodes {
number
body
title
}
}
}
}
`
/* NOTE:
This function needs your personal access token
in order to authorize and execute the query.
DO NOT COPY AND PASTE YOUR TOKEN DIRECTLY.
Instead, I recommend keeping the token in a
.env file and not committing it to your source code
*/
const getIssueData = async (myToken) => {
const issueData = await graphql({
query: linkedIssuesQuery,
repository: [INSERT_REPO_NAME_HERE],
owner:[INSERT_OWNER_HERE],
prNumber: [INSERT_PR_NUMBER_HERE],
maxIssues: [INSERT_MAX_ISSUES_HERE],
headers: {
// Include a space after the word bearer
authorization: "bearer " + myToken,
},
});
}
TLDR;
query getLinkedIssues(
$repository: String!,
$organizationOrOwner: String!,
$prNumber: Int!,
$maxIssues: Int!,
) {
repository(number: $prNumber) {
closingIssuesReference(first: $maxIssues) {
nodes {
number
body
title
}
}
}
}
Reference
이 문제에 관하여(풀 리퀘스트에 연결된 모든 이슈를 얻는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ashleypean/how-to-get-all-issues-linked-to-a-pull-request-c8p
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import { graphql } from "@octokit/graphql";
const linkedIssuesQuery = `
query getLinkedIssues(
$repository: String!,
$owner: String!,
$prNumber: Int!,
$maxIssues: Int!,
) {
repository(number: $prNumber) {
closingIssuesReference(first: $maxIssues) {
nodes {
number
body
title
}
}
}
}
`
/* NOTE:
This function needs your personal access token
in order to authorize and execute the query.
DO NOT COPY AND PASTE YOUR TOKEN DIRECTLY.
Instead, I recommend keeping the token in a
.env file and not committing it to your source code
*/
const getIssueData = async (myToken) => {
const issueData = await graphql({
query: linkedIssuesQuery,
repository: [INSERT_REPO_NAME_HERE],
owner:[INSERT_OWNER_HERE],
prNumber: [INSERT_PR_NUMBER_HERE],
maxIssues: [INSERT_MAX_ISSUES_HERE],
headers: {
// Include a space after the word bearer
authorization: "bearer " + myToken,
},
});
}
query getLinkedIssues(
$repository: String!,
$organizationOrOwner: String!,
$prNumber: Int!,
$maxIssues: Int!,
) {
repository(number: $prNumber) {
closingIssuesReference(first: $maxIssues) {
nodes {
number
body
title
}
}
}
}
Reference
이 문제에 관하여(풀 리퀘스트에 연결된 모든 이슈를 얻는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ashleypean/how-to-get-all-issues-linked-to-a-pull-request-c8p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)