프로그래밍/기타

Github API 를 이용한 Issue 자동 생성

p-a-r-k 2018. 4. 19. 15:53
반응형

웹서버, REST API 서버, 클라이언트 앱 등 github 를 통하여 소스관리를 하는 프로젝트에 오류가 발생하였을 때, 

자동으로 github 에 issue 로 등록하여 issue 관리에 편리성을 도모하기 위함입니다.


준비

  1. github api 를 사용하기 위해서는 personal access token 을 만들어야 합니다.
  2. github api 는 rest api 형태로 제공되므로 https 통신으로 간편하게 구현할 수 있습니다.

설정

  1. Personal Access Token 생성
    1. github 사이트에 로그인합니다.
    2. 오른쪽 상단에 자신의 초상화 또는 아이콘의 메뉴에서 Settings 를 클릭합니다.
    3. 좌측 메뉴에서 Developer settings 를 선택합니다.
    4. 좌측 메뉴에서 Personal access tokens 를 선택합니다.
    5. Generate new token 을 클릭합니다.
    6. Token description 을 'Auto create issue token' 정도로 기술합니다.
    7. Select scopes 에서 repo 만 클릭해줍니다. (issue 관리는 repo 에 포함되어 있습니다.)
    8. 하단이 Generate 버튼을 클릭하면 token 이 생성되고, 지금 보고 있는 시점에서만 token 을 확인할 수 있습니다. (다른 페이지로 이동하고 다시 돌아오면 보이지 않습니다!!!)
  2. Personal Access Token 테스트
    1. 1에서 만든 토큰이 정상적으로 작동하는지 확인합니다.
    2. curl 또는 postman 등의 rest api 툴을 이용하여 진행합니다.
    3. HttpMethod 는 GET 을 사용합니다.
    4. 헤더에 Authorization key 를 입력하고, value 에는 token <위에서 생성된 토큰>을 추가합니다. 자세한 설명은 하단에서 다시 이미지로 설명합니다.
    5. url 에는 https://api.github.com/user 를 입력합니다.
    6. HttpStatus 200(OK) 로 응답이 오고, Response Body 에 자신의 정보가 json 타입으로 출력되면 정상적으로 토큰을 사용할 수 있습니다.
  3. 특정 Repository 에 Issue 생성 테스트
    1. HttpMethod 는 POST 를 사용합니다.
    2. 헤더에 Token 테스트때와 같은 방법으로 Authorization 을 추가한다.
    3. 헤더에 Content-Type: application/json 또는 application/json; charset=utf-8; 정도로 선언합니다.
    4. url 에는 https://api.github.com/repos/wholesaledoctor/app_android/issues 와 같이 입력합니다. (/repos/{repo의 계정관리자}/{repo_name}/issues 순입니다.)
    5. body 를 다음과 같은 형식으로 작성합니다.
    6. Create issue body
      {
        "title""Found a bug",
        "body""I'm having a problem with this.",
        "assignees": [
          "dante2k"
        ],
        "labels": [
          "bug"
        ]
      }
    7. 위 body 에서 title 은 제목, body 는 내용, assignees 는 해당 이슈의 양수인, lebels 는 키워드 같은 레이블을 의미합니다.
    8. HttpStatus 201(Created) 로 응답이 오고, Response Body 에 등록된 Issue 에 대한 정보가 json 타입으로 출력되면 정상적으로 Issue 가 등록된 것 입니다.

웹서버, API 서버에 기능 추가

  1. ASP 서버의 경우 ajax 등을 사용하여 구현할 수 있습니다.
  2. Java 기반 API 서버의 경우 HttpClient, HttpConnection 등을 사용하여 구현할 수 있습니다.

참고자료

  1. Github Token 인증 : https://developer.github.com/v3/auth/#basic-authentication
  2. Github REST API V3 : https://developer.github.com/v3/
  3. Github REST API V3 Issue : https://developer.github.com/v3/issues/


반응형