Skip to main content

사용자 지정 배포 보호 규칙 만들기

GitHub Apps을(를) 사용하여 제3자 시스템으로 배포 보호를 자동화합니다.

누가 이 기능을 사용할 수 있나요?

사용자 지정 배포 보호 규칙은 모든 플랜의 퍼블릭 리포지토리에서 사용할 수 있습니다. 프라이빗 또는 내부 리포지토리의 사용자 지정 배포 보호 규칙에 액세스하려면 GitHub Enterprise를 사용해야 합니다. 자세한 내용은 GitHub의 플랜을(를) 참조하세요.

필수 조건

참고 항목

사용자 지정 배포 보호 규칙은 현재 공개 미리 보기 버전이며 변경될 수 있습니다.

배포 보호 규칙에 대한 일반적인 내용은 GitHub Actions를 사용하여 배포을(를) 참조하세요.

GitHub Apps을(를) 사용하여 사용자 지정 배포 보호 규칙 만들기

  1. GitHub App을(를) 생성합니다. 자세한 내용은 GitHub 앱 등록을(를) 참조하세요. 다음과 같이 GitHub App을(를) 구성합니다.

    1. 필요에 따라 "사용자 식별 및 권한 부여"의 콜백 URL 텍스트 필드에 콜백 URL을 입력합니다. 자세한 내용은 사용자 권한 부여 콜백 URL 정보을(를) 참조하세요.
    2. "사용 권한"에서 리포지토리 권한을 선택합니다.
    3. "작업" 오른쪽에서 드롭다운 메뉴를 클릭하고 액세스: 읽기 전용을 선택합니다.
      새 GitHub 앱의 "Repository permissions" 섹션의 스크린샷 작업 권한은 "읽기 전용"으로 표시되고 주황색 윤곽선으로 표시됩니다.
    4. "배포" 오른쪽에서 드롭다운 메뉴를 클릭하고 액세스: 읽기 및 쓰기를 선택합니다.
      새 GitHub 앱의 "Repository permissions" 섹션의 스크린샷 배포 권한은 "Read and write"로 표시되고 주황색 윤곽선으로 표시됩니다.
    5. "이벤트 구독"에서 배포 보호 규칙을 선택합니다.
      새 GitHub 앱의 "Subscribe to events section" 섹션의 스크린샷 배포 보호 규칙의 확인란은 주황색 윤곽선으로 표시됩니다.
  2. 리포지토리에 사용자 지정 배포 보호 규칙을 설치하고 사용 설정합니다. 자세한 내용은 사용자 지정 배포 보호 규칙 구성을(를) 참조하세요.

배포 승인 또는 거부하기

워크플로가 사용자 지정 배포 보호 규칙이 사용 설정된 환경을 참조하는 작업에 도달하면 GitHub에서 deployment_protection_rule 페이로드를 포함하는 사용자가 구성한 URL로 POST 요청을 보냅니다. 배포 보호 규칙을 작성하여 deployment_protection_rule 페이로드에 따라 배포를 승인하거나 거부하는 REST API 요청을 자동으로 보낼 수 있습니다. 다음과 같이 REST API 요청을 구성합니다.

  1. 들어오는 POST 요청의 유효성을 검사합니다. 자세한 내용은 웹후크 제공 유효성 검사하기을(를) 참조하세요.

  2. JWT(JSON Web Token)를 사용하여 GitHub App(으)로 인증합니다. 자세한 내용은 GitHub 앱으로 인증을(를) 참조하세요.

  3. deployment_protection_rule 웹후크 페이로드의 설치 ID를 사용하여 설치 토큰을 생성합니다. 자세한 내용은 GitHub 앱을 사용한 인증 정보을(를) 참조하세요.

    curl --request POST \
    --url "https://api.github.com/app/installations/INSTALLATION_ID/ACCESS_TOKENS" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer {jwt}" \
    --header "Content-Type: application/json" \
    --data \
    '{ \
       "repository_ids": [321], \
       "permissions": { \
          "deployments": "write" \
       } \
    }'
    
  4. 필요에 따라 GitHub에 다른 작업을 수행하지 않고 상태 보고서를 추가하려면 /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rulePOST 요청을 보냅니다. 요청 본문에서 state을(를) 생략합니다. 자세한 내용은 워크플로 실행에 대한 REST API 엔드포인트을(를) 참조하세요. 동일한 배포에 상태 보고서를 최대 10번 게시할 수 있습니다. 상태 보고서는 Markdown 서식을 지원하며 최대 1024자까지 가능합니다.

  5. 요청을 승인하거나 거부하려면 /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rulePOST 요청을 보냅니다 . 요청 본문에서 state 속성을 approved 또는 rejected(으)로 설정합니다. 자세한 내용은 워크플로 실행에 대한 REST API 엔드포인트을(를) 참조하세요.

  6. 필요에 따라 /repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvalsGET 요청을 전송하여 워크플로 실행에 대한 승인 상태를 요청합니다. 자세한 내용은 워크플로 실행에 대한 REST API 엔드포인트을(를) 참조하세요.

  7. 필요에 따라 GitHub에 대한 배포를 검토합니다. 자세한 내용은 배포 검토을(를) 참조하세요.

GitHub Marketplace에 사용자 지정 배포 보호 규칙 게시하기

GitHub App을(를) GitHub Marketplace에 게시하여 개발자가 적절한 보호 규칙을 검색하고 GitHub 리포지토리에 설치할 수 있습니다. 또는 필요에 맞게 기존 사용자 지정 배포 보호 규칙을 찾아볼 수 있습니다. 자세한 내용은 앱용 GitHub Marketplace 정보GitHub Marketplace에 앱 나열을(를) 참조하세요.