SW개발/GitHub API

GitHub API로 이슈 리스트 확인 방법

공무원 봉급 2022. 5. 31. 14:51

 

많은 소프트웨어 개발자분들께서 형상관리 시스템으로 GitHub를 많이 사용하고 계실 것입니다. 대부분의 개발자분들께서는 윈도우즈 환경의 GitHub 툴을 사용하시기도 하고, GitHub 웹페이지에 접속하셔서 사용하시는 분들도 계실 것입니다. 이 페이지는 리눅스의 CLI 환경을 기준으로 hub라는 패키지를 이용하여 GitHub의 이슈 리스트를 받아오는 방법에 대해서 설명합니다.

 

GitHub API 왜 필요한가?

API는 자동화에 널리 사용되는 개념입니다. 많은 개발자 분들께서 git 명령에 대해서는 익숙하게 활용을 하고 계시지만, GitHub API에 대해서는 익숙하지 못한 편입니다. GitHub API를 이용하면 자동으로 PR(Pull Request)를 생성할 수도 있고, PR에 comment를 남길 수도 있습니다. 특히 Jenkins와 GitHub API를 연동하게 되면, Jenkins에서 수행한 빌드 잡(Build Job) 및 테스트 자동화 결과를 GitHub API와 연동할 수 있습니다.

 

필요한 패키지 (hub)

GitHub API를 활용하는 방법은 무궁무진합니다. 전통적인 curl 명령을 통해서도 가능하고, hub 라는 패키지를 설치해서 사용하는 방법도 있습니다. 본 페이지에서는 hub 패키지를 이용해서 GitHub API를 호출하는 방법에 대해서 설명드리겠습니다.

물론, hub 패키지의 소스를 다운로드 받아서 컴파일 하는 방법도 있습니다만, apt-get install 명령으로 패키지를 설치하는 방법이 훨씬 간편하고 편리합니다.

 

hub 패키지 설치 여부

hub 패키지가 설치되었는지 확인하기 위해서는 hub --version 명령을 실행해보면 됩니다.

$ hub --version
git version 2.34.1
hub version 2.14.2

위와 같이 hub --version 명령을 통해서 버전이 정상적으로 표시되는 것을 확인할 수 있습니다.

 

$ hub
-bash: hub: command not found

반면 위와 같이 hub 버전이 표시되지 않으면 hub 패키지가 설치되어 있지 않으므로 hub 패키지 설치가 필요합니다.

 

hub 패키지 설치 방법

hub 패키지를 설치하는 방법은 아주 간단합니다.

$ sudo apt-get install hub

 

이슈 리스트를 확인하는 명령

$ hub issue

위와 같이 "hub issue" 명령을 통해서 이슈 리스트를 확인할 수 있습니다.

$ hub issue
      #3  IP를 자동으로 등록해주는 기능에서 복수개의 라즈베리파이일 경우에 다른 이슈에 글을 등록하도록 수정
      #2  라즈베리파이 IP (성주)
      #1  라즈베리파이 IP

위와 같이 "hub issue" 명령을 통해서 이슈 리스트를 확인할 수 있지만, 간혹 원하는 포맷으로 출력을 하고 싶은 경우도 있습니다.

 

특정 포맷으로 출력하는 방법

만약 특정 포맷으로 출력하고 싶다면 -f 옵션을 입력하면 됩니다.

$ hub issue -f%I%n
3
2
1

-f 옵션 뒤에 %I와 %n을 입력하면 이슈 번호와 개행을 조합해서 출력할 수 있습니다.

 

이슈 관련 도움말 확인 방법

특정 포맷으로 출력을 하려면 hub-issue 메뉴얼을 살펴보면 됩니다.

$ man hub-issue

 

세부 옵션의 의미는 아래와 같습니다.

옵션 의미 비고
%I issue number  
%i issue number prefixed with "#"  
%U the URL of this issue  
%S state (i.e. "open", "closed")  
%sC set color to red or green, depending on issue state.  
%t title  
%l colored labels  
%L raw, comma-separated labels  
%b body  
%au login name of author  
%as comma-separated list of assignees  
%Mn milestone number  
%Mt milestone title  
%NC number of comments  
%Nc number of comments wrapeped in parentheses, or blank string if zero.  
%cD created date-only (no time of day)  
%cr created date, relative  
%ct created date, UNIX timestamp  
%cI created date, ISO 8601 format  
%uD updated date-only (no time of day)  
%ur update date, relative  
%ut update date, UNIX timestamp  
%uI update date, ISO 8601 format  
%n newline  
%% a literal %  

 

번호와 타이틀을 '|'로 구분해서 출력하는 방법

-f%I\|%t%n 옵션을 넣으면 아래와 같이 출력이 됩니다.

$ hub issue -f%I\|%t%n
3|IP를 자동으로 등록해주는 기능에서 복수개의 라즈베리파이일 경우에 다른 이슈에 글을 등록하도록 수정
2|라즈베리파이 IP (성주)
1|라즈베리파이 IP