Skip to main content

매니페스트에서 GitHub 앱 등록

          GitHub App 매니페스트는 미리 구성된 GitHub App 등록을 다른 사용자와 공유하는 방법입니다. 매니페스트 흐름을 사용하면 사용자가 신속하게 GitHub App를 등록할 수 있습니다.

매니페스트 정보 GitHub App

참고

GitHub App 엔터프라이즈 소유 GitHub Apps의 매니페스트는 사용할 수 없습니다. 현재 엔터프라이즈 권한은 지원하지 않습니다.

누군가가 매니페스트에서 등록하는 GitHub App 경우 URL을 따르고 앱 이름을 지정하기만 하면 됩니다. 매니페스트에는 앱을 자동으로 등록하는 데 필요한 권한, 이벤트 및 웹후크 URL이 포함됩니다. 매니페스트 흐름은 등록을 GitHub App 만들고 앱의 웹후크 비밀, PEM 파일(프라이빗 키), 클라이언트 암호 및 ID를 GitHub App 생성합니다. 매니페스트에서 등록을 GitHub App 만드는 사람은 등록을 GitHub App 소유하고 등록 설정을 편집하거나 삭제하거나 다른 사람에게 GitHub전송하도록 선택할 수 있습니다.

          [Probot](https://probot.github.io/)을 사용하여 매니페스트를 시작 GitHub App 하거나 예제 구현을 볼 수 있습니다. 자세한 내용은 [Probot을 사용하여 매니페스트 흐름을 구현 GitHub App](#using-probot-to-implement-the-github-app-manifest-flow) 하는 방법을 참조하세요.

매니페스트를 사용하여 GitHub App 미리 구성된 앱을 등록할 수 있는 몇 가지 시나리오는 다음과 같습니다.

  • 새로운 팀원이 개발할 때 빠르게 적응할 수 있도록 GitHub Apps지원해 주세요.
  • 다른 사용자가 앱을 구성할 필요 없이 API를 사용하여 GitHub App 확장 GitHub 할 수 있도록 허용합니다.
  • GitHub App 참조 디자인을 만들어 GitHub 커뮤니티와 공유합니다.
  • GitHub Apps을(를) 동일한 구성을 사용하여 개발 및 프로덕션 환경에 배포해야 합니다.
  • GitHub App 구성의 수정 내역을 추적합니다.

          GitHub App 매니페스트 흐름 구현

매니페스트 흐름은 GitHub AppOAuth 흐름과 유사한 핸드셰이크 프로세스를 사용합니다. 흐름은 매니페스트를 사용하여 등록 GitHub App 하고 앱의 프라이빗 키, 웹후크 비밀 및 ID를 검색하는 데 사용되는 임시 code 를 받습니다.

참고

매니페스트 흐름에서 1 GitHub App 시간 이내에 세 단계를 모두 완료해야 합니다.

매니페스트 흐름을 구현 GitHub App 하려면 다음 단계를 수행합니다.

  1. 새 GitHub을 등록하도록 GitHub App로 리디렉션합니다.
  2.        GitHub 는 사용자를 사이트로 다시 리디렉션합니다.
    
  3. 임시 코드를 교환하여 앱 구성을 검색합니다.

1. 사람들을 GitHub로 리디렉션하여 새롭게 등록하기 위한 GitHub App

새로운 GitHub App를 등록하도록 리디렉션하려면, 클릭을 통해 개인 계정을 위한 POST 요청 또는 조직 계정을 위한 https://github.com/settings/apps/new 요청을 보낼 수 있는 링크를 제공합니다. 여기서 ORGANIZATION에는 앱이 등록될 조직 계정의 이름으로 대체됩니다.

          [매니페스트 매개 변수를GitHub App](#github-app-manifest-parameters) JSON으로 인코딩된 문자열로 라는 `manifest`매개 변수에 포함해야 합니다. 추가 보안을 위해 `state`[매개 변수](#parameters)를 포함할 수도 있습니다.

앱을 등록하는 사용자는 매개 변수에 포함된 앱의 이름을 편집할 GitHub 수 있는 입력 필드가 있는 페이지로 manifest 리디렉션됩니다. namemanifest에 포함하지 않는 경우 이 필드에서 앱의 고유한 이름을 설정할 수 있습니다.

          GitHub App 매니페스트 매개 변수
이름형식설명
namestring
          GitHub App의 이름입니다.

url | string | 필수입니다. GitHub App의 홈페이지입니다. hook_attributes | object | GitHub App의 웹후크 구성입니다. redirect_url | string | 사용자가 매니페스트에서 등록 GitHub App 을 시작한 후 리디렉션할 전체 URL입니다. callback_urls | array of strings | 다른 사람이 설치 권한을 부여한 후 리디렉션할 전체 URL입니다. 최대 10개의 콜백 URL을 제공할 수 있습니다. setup_url | string | 사용자들이 GitHub App을 설치한 후 추가 설정이 필요한 경우 리디렉션할 전체 URL입니다. description | string | GitHub App에 대한 설명입니다. public | boolean | GitHub App이 공개적으로 이용 가능할 때는 true으로 설정하고, 앱 소유자만 접근할 수 있을 때는 false로 설정합니다. default_events | array | 구독하는 GitHub App 목록입니다. default_permissions | object | GitHub App에 필요한 사용 권한 집합입니다. 개체 형식은 키에 권한 이름(예 issues)을 사용하고 값에 액세스 형식(예: write)을 사용합니다. 자세한 내용은 GitHub 앱에 대한 권한 선택을(를) 참조하세요. 사용 가능한 권한 목록과 매개 변수가 있는 이름을 보려면 개인용 액세스 토큰 관리을(를) 참조하세요. request_oauth_on_install | boolean | true 설치 후 GitHub App 사용자에게 권한을 부여GitHub App하도록 요청하도록 설정합니다. setup_on_update | boolean | 설치를 업데이트한 후 사용자를 true에서 setup_url로 리디렉션하도록 GitHub App를 설정합니다.

          `hook_attributes` 개체에는 다음 키가 있습니다.
이름형식설명
urlstring
          **필수입니다**. 웹후크 `POST` 요청을 수신할 서버의 URL입니다.

active | boolean | 이 후크가 트리거될 때 이벤트 세부 정보를 전달하며 기본값은 true입니다.

매개 변수

이름형식설명
statestring추측할 수 없는 임의 문자열입니다. 교차 사이트 요청 위조 공격에서 보호하는 데 사용됩니다.

예시

이 예시에서는 개인 계정에 대한 POST 요청을 트리거하는 단추가 있는 웹 페이지의 양식을 사용합니다.

<form action="https://github.com/settings/apps/new?state=abc123" method="post">
 Register a GitHub App Manifest: <input type="text" name="manifest" id="manifest"><br>
 <input type="submit" value="Submit">
</form>

<script>
 input = document.getElementById("manifest")
 input.value = JSON.stringify({
   "name": "Octoapp",
   "url": "https://www.example.com",
   "hook_attributes": {
     "url": "https://example.com/github/events",
   },
   "redirect_url": "https://example.com/redirect",
   "callback_urls": [
     "https://example.com/callback"
   ],
   "public": true,
   "default_permissions": {
     "issues": "write",
     "checks": "write"
   },
   "default_events": [
     "issues",
     "issue_comment",
     "check_suite",
     "check_run"
   ]
 })
</script>

이 예시에서는 조직 계정에 대한 POST 요청을 트리거하는 단추가 있는 웹 페이지의 양식을 사용합니다. ORGANIZATION을(를) 앱을 등록하려는 조직 계정의 이름으로 바꿉니다.

<form action="https://github.com/organizations/ORGANIZATION/settings/apps/new?state=abc123" method="post">
 register a GitHub App Manifest: <input type="text" name="manifest" id="manifest"><br>
 <input type="submit" value="Submit">
</form>

<script>
 input = document.getElementById("manifest")
 input.value = JSON.stringify({
   "name": "Octoapp",
   "url": "https://www.example.com",
   "hook_attributes": {
     "url": "https://example.com/github/events",
   },
   "redirect_url": "https://example.com/redirect",
   "callback_urls": [
     "https://example.com/callback"
   ],
   "public": true,
   "default_permissions": {
     "issues": "write",
     "checks": "write"
   },
   "default_events": [
     "issues",
     "issue_comment",
     "check_suite",
     "check_run"
   ]
 })
</script>

2. 사용자를 사이트로 다시 리디렉션합니다. GitHub

사용자가 만들기 GitHub AppGitHub 를 클릭하면 코드 매개 변수에서 redirect_url 임시 code 로 다시 리디렉션됩니다. 예시:

https://example.com/redirect?code=a180b1a3d263c81bc6441d7b990bae27d4c10679

          `state` 매개 변수를 제공한 경우 `redirect_url`에도 해당 매개 변수가 표시됩니다. 예시:

https://example.com/redirect?code=a180b1a3d263c81bc6441d7b990bae27d4c10679&state=abc123

3. 임시 코드를 교환하여 앱 구성 검색

핸드셰이크를 완료하려면 임시 codePOST 요청에 담아 매니페스트에서 GitHub App 생성 엔드포인트로 보냅니다. 응답에는 id (GitHub App ID), pem (프라이빗 키), 그리고 webhook_secret가 포함됩니다. GitHub 는 앱에 대한 웹후크 비밀을 자동으로 만듭니다. 이러한 값을 앱 서버의 환경 변수에 저장할 수 있습니다. 예를 들어, 앱에서 dotenv를 사용하여 환경 변수를 저장하는 경우 변수를 앱의 .env 파일에 저장합니다.

매니페스트 흐름의 GitHub App 이 단계를 1시간 이내에 완료해야 합니다.

참고

이 엔드포인트는 속도가 제한됩니다. 현재 속도 제한 상태를 가져오는 방법을 알아보려면 속도 제한을 참조하세요.

POST /app-manifests/{code}/conversions

엔드포인트의 응답에 대한 자세한 내용은 매니페스트에서 GitHub App 생성하기를 참조하십시오.

매니페스트 흐름의 마지막 단계가 완료되면, 흐름에서 앱을 등록한 사람은 자신의 모든 계정에 설치할 수 있는 등록된 GitHub App의 소유자가 됩니다. API를 사용하여 앱을 확장하거나, 소유권을 GitHub 다른 사람에게 이전하거나, 언제든지 삭제하도록 선택할 수 있습니다.

Probot을 사용하여 매니페스트 흐름 구현 GitHub App

          [Probot](https://probot.github.io/)은 웹후크 유효성 검사 및 인증 수행과 같이 모든 [](https://nodejs.org/)작업에 필요한 많은 작업을 수행하는 GitHub Apps 사용하여 빌드된 프레임워크입니다. Probot은 [GitHub App 매니페스트 흐름을](#implementing-the-github-app-manifest-flow) 구현하여 커뮤니티와 참조 디자인을 쉽게 만들고 공유할 GitHub App 수 있도록 합니다 GitHub .

공유할 수 있는 Probot 앱을 만들려면 다음 단계를 수행합니다.

  1.        [새 GitHub App를 생성합니다](https://probot.github.io/docs/development/#generating-a-new-app).
    
  2. 생성한 프로젝트를 열고 app.yml 파일의 설정을 사용자 지정합니다. Probot은 app.yml 설정을 GitHub App 매니페스트 매개 변수로 사용합니다.
  3. 애플리케이션의 사용자 지정 코드를 추가합니다.
  4.        [로컬에서 GitHub App 실행](https://probot.github.io/docs/development/#running-the-app-locally) 하거나 원하는 위치에 호스트합니다. 호스트된 앱의 URL로 이동하면 사용자가 클릭하여 미리 구성된 앱을 등록할 수 있는 **등록 GitHub App** 단추가 있는 웹 페이지를 찾을 수 있습니다.
    
           [dotenv](https://github.com/bkeepers/dotenv)를 사용하여 Probot은 `.env` 파일을 생성하고, 앱 구성에서 가져온 값으로 `APP_ID`, `PRIVATE_KEY`, `WEBHOOK_SECRET` 환경 변수를 설정합니다.