GitHub API의 작동 방식을 알고 API에서 리포지토리를 만들자.
소개
로컬 Git 리포지토리를 GItHub 등 다른 서비스에 통째로 이식한다 방법을 스크립팅하는 것이 좋습니다만, 하나하나 수동으로 UI로부터 빈 리포지터리 작성하는 것? 귀찮아?
그래서 GitHub의 리포지토리를 명령 기반으로 만드는 방법을 찾았습니다. 결론을 말하면 GitHub API v3을 사용하면 됩니다.
또한 API를 사용하려면 OAuth 인증을 수행해야합니다.
GitHub 인증 - Authorizing OAuth Apps
Access Token을 발행하여 사용한다. 게시는 UI에서 가능
GitHub에서는 API를 이용하기 위해 Access Token을 취득해야 합니다.
좀 API를 사용하고 싶다면 tokens에서
New personal access token
를 선택하면 OK입니다.API를 이용한 Access Token 생성도 가능
예를 들어 애플리케이션 등에서 Access Token을 발행하는 구조를 만드는 경우의 흐름은 다음과 같습니다.
OAuth로 말하면 OAuth Apps를 등록하는 곳이 권한 서버
먼저 여기에서 OAuth Apps를 등록합니다.
이때 Authorization callback URL 이라는 것을 등록합니다만 이것이 특징적입니다. 다음 Authorization API(
https://github.com/login/oauth/authorize?client_id=$CLIENT_ID&scope=repo
)를 실행하면 해당 응답에 Code가 들어오는 것이 아니라 Authorization callback URL에 code=${code}의 query로 전달됩니다.그대로 Access Token이 발행되는 것은 아니고 일단 Code가 클라이언트측이 등록한 어플리케이션에 송신된다고 하는 것이 재미있네요. 쉽게 Access Token이 발행할 수 없도록 가드를 견고하게 하고 싶은 경우에 고려했다든가 그런 느낌일까 예상.
또, Code는 query로 지정되어 해당 페이지로 리디렉트 되는 형태가 되므로, callback URL용의 서버를 준비하지 않아도, 열심히 query를 들여다 보면 스스로 API를 호출해도 OK입니다.
Private repository 참조 정보
Default이면 이 액세스 토큰에서 private repository를 참조할 수 없습니다. 이것은 위의 액세스 토큰 설정 때문입니다.
repo: Full control of private repositories
를 설정하면 OK.참고 : GitHub API v3에서 프라이빗 리포지토리 정보를 얻지 못하는 문제를 해결하는 방법
사용 샘플
GitHub API v3에서 리포지토리를 만들고 파일 커밋 을 참고하겠습니다. 샘플 도구 을 만들었습니다.
외부 서버에 두고 callback URL에 등록해 두면,
https://github.com/login/oauth/authorize?client_id=$CLIENT_ID&scope=repo
의 response로 {"access_token":"yyyy"}
를 취할 수 있습니다.시퀀스에 일으키면 이런 느낌이군요.
Access Token을 받으면 GitHub API v3 사용
상기의 API 사양서를 보고 있으면, REST 뿐만이 아니라 여러가지 용도가 충실합니다만, 우선 repository의 만드는 방법만 소개. 마찬가지로 GitHub API v3에서 리포지토리를 만들고 파일 커밋 에 자세하게 사용법이 소개되고 있습니다(이미 전부 참고원을 보면 좋지 않을까)
API 인증은 Access Token을
Authorization: bearer AccessToken
에서 HTTP header로 설정하여 이루어집니다.후에는
https://api.github.com/user/repos
API에 Body로 repository명을 지정해 POST하면 OK입니다.curl -H "Authorization: bearer $TOKEN" -X POST \
-d "{"name":"repository name","auto_init":true or false, "private": true or false}" \
https://api.github.com/user/repos
일단 이쪽도 샘플 도구 에 스크립트화 해 넣고 있습니다.
참고
공식
GitHub API v3
Authorizing OAuth Apps
참고 기사
GitHub API v3에서 프라이빗 리포지토리 정보를 얻지 못하는 문제를 해결하는 방법
GitHub API v3에서 리포지토리를 만들고 파일 커밋
앱 시선에서 GitHub OAuth 이야기 [iOS] OAuth 인증을 극대화 (GitHubAPI에서 배우는 OAuth 인증의 흐름)
이런 느낌으로 매우 알기 쉽게 정리하고 있었습니다.
Reference
이 문제에 관하여(GitHub API의 작동 방식을 알고 API에서 리포지토리를 만들자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/developer-kikikaikai/items/5f4f0e2ea274326d7157텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)