2026, 새로운 도약을 시작합니다.

버전 업데이트 플러그인 개발 - Github API (1) - 준비사항

처음 버전 업데이트 기능을 담당해서 개발할 때, 전임자가 작업해놓은 코드와 처음 보는 API로 인해서 많은 시행착오들을 겪으면서 개발을 했었습니다. (물론 지금도 권한관련 문제를 해결하려고 노력 중입니다 ㅠㅠ)

앞으로 Github API를 활용할 분들과 저와 동일한 문제를 겪으신 분들을 위해서 

1. 준비사항 & 토큰 적용

2. 활용한 Github API 기능

두가지에 대해서 부족한 필력이지만 강좌 글을 남깁니다.

GitHub API

Github API는 다양한 기능들을 제공하고 있으며 버전 업데이트 플러그인도 일부를 활용해서 개발되었습니다.

기본적으로 별다른 인증과정 없이 사용할 수도 있지만 시간 당 60번의 요청제한이 있습니다.

그러므로 개인 엑세스 토큰(PAT)을 발급받아서 요청제한을 늘리시는 것을 권장합니다.

Github API를 활용하기 위한 준비 - 토큰 발급

토큰에는 두가지 종류가 있습니다.

  • Fine-grained personal access tokens
    • 공개된지 얼마 안된 토큰으로, PAT에 부여하는 권한 및 저장소 액세스를 세부적으로 제어할 수 있으므로 보안성이 향상되었다고 합니다.
  • personal access tokens (classic) (PAT)

저 같은 경우는 gnuboard5 repository가 공개이기 때문에 권한&범위를 설정하지 않았고 둘 중 아무거나 발급받아도 정상적으로 사용 가능했습니다. 다른 저장소를 사용하실 경우, 적절한 권한&범위를 설정해야 합니다.

토큰 생성 방법

1. Settings -> Developer setting -> Personal access tokens

2. Fine-grained tokens, Tokens(classic) 중 1개를 선택해서 발급

3717582117_1666840655.8303.png

  • Fine-grained personal access tokens
    • Generate new token 버튼 클릭
    • Expiration(유효기간/필수), Token name(토큰 이름/필수), Description(토큰 설명/선택) 입력
    • Repository access > Public Repositories (read-only) 선택 (디폴트)
    • Permissions > 선택하지 않음
    • Generate token (토큰생성) 버튼 클릭

토큰 발급 화면

3717582117_1666840885.9317.png

토큰 발급 결과

3717582117_1666840904.2512.png

  • Personal Access Tokens (classic)
    • Generate new token 버튼 클릭 > Generate new token (classic) 선택
    • Expiration(유효기간/필수), Note(토큰 이름/필수) 입력
    • Select scopes (토큰 범위) > 선택하지 않음
    • Generate token (토큰생성) 버튼 클릭

토큰 발급 화면

3717582117_1666840917.8938.png

토큰 발급 결과

3717582117_1666840928.4865.png

  • 생성 후 나오는 토큰 값은 다시 확인 할 수 없으므로 따로 메모하거나 저장해둬야 합니다. (잃어버려도 새로 재발급해서 사용해도 되지만 번거롭습니다)
  • 범위가 지정된 토큰은 개인 repository에 접근할 수 있으므로 공개되지 않도록 주의가 필요합니다.
  • 실수로 저장소에 토큰 값이 push됬을 때 자동으로 만료되어 사용할 수 없습니다.
  • Github API 개인 엑세스 토큰 생성 참고

Github API를 활용하기 위한 준비 - cURL 설정

cURL을 사용해서 API 요청을 하기 전, 발급 받은 토큰을 적용하고 간단한 설정을 해야합니다.

토큰 적용

API 요청 Header에 Authorization 속성 값으로 토큰 값을 추가해줍니다.

  • 예시 : Authorization: token {발급받은 토큰}

User Agent 설정

User-Agent 헤더 값으로 GitHub 사용자 이름 또는 애플리케이션 이름을 추가해야 합니다. 

예시

그누보드5 Github 저장소의 최신 릴리즈 1건의 정보를 불러오는 예시입니다.

Github API 요청 소스코드 

[code]

/* Github API Test */

$ch             = curl_init();

$header         = array();

$githubToken    = "{Github Token 입력}";

$url            = "https://api.github.com/repos/gnuboard/gnuboard5/releases?per_page=1";

if (!empty($githubToken)) {

    array_push($header, "Authorization: token {$githubToken}");

}

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_USERAGENT, "gnuboard");

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_TIMEOUT, 3600);

$response = curl_exec($ch);

echo "<pre style='font-size:1.4em'>";

print_r(json_encode(json_decode($response), JSON_PRETTY_PRINT));

echo "</pre>";

/* Github API Test */

[/code]

실행결과

3717582117_1666839580.8955.png

다음 장에서는 버전 업데이트에서 활용한 Github API 기능에 대해서 설명하도록 하겠습니다.

|

댓글 3개

녹두탐님의 소중한 팁 감사해요!! 저도 시행 착오 많이 하는데.. 덕분에 한수 배워갑니다~~
설명까지 해주시다니 정말 감사합니다!

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

개발강좌

프로그램 강좌 :
1. 유창화님의 썸네일, 정규표현식, 이미지관련 강좌
2. Sphinx 검색엔진을 이용한 도로명 주소 검색 시스템 구축
번호 분류 제목 글쓴이 날짜 조회
108 그누보드5 2주 전 조회 36
107 그누보드5
[그누보드5]
4개월 전 조회 158
106 그누보드5 5개월 전 조회 397
105 그누보드5 6개월 전 조회 375
104 그누보드5 7개월 전 조회 314
103 그누보드5 2년 전 조회 1,285
102 그누보드5 2년 전 조회 946
101 그누보드5 2년 전 조회 1,037
100 그누보드5 2년 전 조회 2,340
99 그누보드5 2년 전 조회 873
98 정규표현식 2년 전 조회 1,174
97 그누보드5 3년 전 조회 2,361
96 그누보드5 3년 전 조회 2,743
95 그누보드5 3년 전 조회 3,283
94 그누보드5 3년 전 조회 3,656
93 그누보드5 3년 전 조회 2,896
92 그누보드5 5년 전 조회 5,750
91 그누보드5 5년 전 조회 3,405
90 그누보드5 7년 전 조회 8,305
89 정규표현식 7년 전 조회 8,340
88 그누보드5 7년 전 조회 4,621
87 정규표현식 8년 전 조회 7,443
86 그누보드5 8년 전 조회 5,490
85 정규표현식 8년 전 조회 4,130
84 정규표현식 8년 전 조회 3,739
83 정규표현식 8년 전 조회 3,410
82 정규표현식 8년 전 조회 3,632
81 이미지관련 8년 전 조회 8,495
80 이미지관련 8년 전 조회 6,706
79 정규표현식 8년 전 조회 4.7만
🐛 버그신고