GitHub의 자동화에는 일반적으로 여러 구성 요소가 함께 작동합니다. 가장 중요한 GitHub 네이티브 구성 요소는 다음과 같습니다.
-
**GitHub Actions 워크플로우**는 자동화 논리를 실행하기 위한 실행 환경을 제공합니다. 즉, 단일 리포지토리 내에서 작동하지만 리포지토리 전체 또는 외부에서 자동화하도록 확장할 수 있습니다. -
**GitHub Apps** 에는 런타임이 없습니다. 대신 외부 서비스 또는 워크플로에 관계없이 자동화가 안전하게 인증되고 작동할 수 있도록 ID, 권한 및 이벤트 배달을 제공합니다.
대부분의 기업 자동화에서는 GitHub Apps와 GitHub Actions를 함께 사용합니다. 예를 들어, GitHub Actions에서 실행되는 워크플로는 GitHub App를 사용하여 저장소나 조직 전반에서 작업을 수행할 수 있는 단기 토큰을 얻을 수 있습니다.
이 가이드에서는 GitHub Apps, 외부 자동화, 그리고 GitHub Actions가 어떻게 서로 보완하는지와 엔터프라이즈에서 각각을 언제 사용하는 것이 좋은지를 설명합니다.
GitHub Apps
GitHub App는 저장소, 조직 또는 기업 내에서 자동화를 수행하는 데 필요한 신원, 권한 및 웹후크 이벤트를 제공합니다. GitHub Apps 자체는 논리를 실행하지 않으며, 다른 시스템이 실행할 수 있도록 지원합니다.
GitHub Apps은 다음을 제공하여 기업 자동화를 지원합니다.
- 세분화된 접근 권한을 사용하여 최소 권한 원칙을 따르다
- 엔터프라이즈, 조직 또는 리포지토리 수준에서 설치 범위 지정
- 보안 액세스를 위한 수명이 짧은 토큰
- 완전한 감사 기능을 갖춘 고유 ID
-
**GitHub App 관리자 역할을 통한 위임된 관리** -
엔터프라이즈 계정 소유 시 **대규모 일관성**
GitHub Apps이(가) 무엇을 가능하게 하나요?
GitHub Apps를 사용하면 외부 서비스나 워크플로 단계 등에서 작성한 자동화가 허용된 권한 범위 내에서 GitHub API에서 작동할 수 있습니다. 다음은 그 예입니다.
- 웹후크 이벤트 수신 및 외부 서비스 트리거
- 워크플로가 기본 리포지토리 범위 외부에서 작동하도록 설정
- GitHub를 타사 시스템과 통합
- 여러 리포지토리에서 변경 내용 조정
- 엔터프라이즈 수준 활동을 모니터링하는 수명이 긴 봇 또는 서비스 실행
GitHub Actions
GitHub Actions는 저장소 내에서 자동화 논리를 실행하기 위해 GitHub의 내장 런타임을 제공합니다. 워크플로는 자체 호스팅 실행기에서 실행되며 코드 변경 또는 리포지토리 이벤트와 관련된 작업에 적합합니다.
다음과 같은 경우 GitHub Actions를 사용하십시오.
- CI/CD(빌드, 테스트, 배포)
- 끌어오기 요청 검사 및 유효성 검사
- 리포지토리 수준 유지 관리 작업
- 푸시, 태그 또는 문제 업데이트에 응답하는 이벤트 기반 워크플로
- cron을 사용하여 예약된 작업
GitHub Actions가 GitHub Apps를 사용하는 방법
GitHub Actions와 GitHub Apps는 깊이 연결되어 있습니다.
- 워크플로 권한은 GitHub App 권한에 직접 매핑됩니다.
- 워크플로는
actions/create-github-app-token을 사용하여 특정 GitHub App로 인증할 수 있습니다. - GitHub Apps는
repository_dispatch과 같은 이벤트를 통해 워크플로를 트리거할 수 있습니다.
외부 자동화 및 서비스
외부 자동화는 사용자 고유의 인프라에서 GitHub 외부에서 실행됩니다. 이러한 서비스는 일반적으로 다음과 같습니다.
- GitHub App에서 웹후크 이벤트를 수신합니다.
- 단기 설치 토큰을 요청하려면 GitHub App를 사용하십시오.
- 장기 실행 또는 엔터프라이즈 간 논리 실행
- 외부 비즈니스 시스템과 통합
예를 들면 다음과 같습니다.
- 조직 전체 구성 관리
- 정책 적용 서비스
- 다중 리포지토리 코드 또는 메타데이터 동기화
- 준수 보고서 생성
- 조직 간 문제 또는 끌어오기 요청 관리
이 모든 것은 실행이 아니라 인증, 신원 및 이벤트를 위해 GitHub Apps에 의존합니다—실행을 위해서는 의존하지 않습니다.
이러한 구성 요소가 함께 작동하는 방법
대부분의 엔터프라이즈 자동화는 GitHub Apps, 외부 서비스 및 GitHub Actions의 조합을 사용하여 강력하며 확장할 수 있는 워크플로를 구현합니다.
다음은 그 예입니다.
- 엔터프라이즈 GitHub App는 새 리포지토리를 만들 때 웹후크를 수신하고 웹후크 페이로드를 외부 서비스가 실행 중인 서버로 보냅니다.
- 외부 서비스는 필요한 설정을 표준화하고 리소스를 프로비전합니다.
- 서비스는 저장소에서 GitHub Actions 워크플로를 트리거합니다.
- 워크플로는 CI를 수행하거나, 템플릿을 배포하거나, 검사를 구성합니다.
각 구성 요소는 다른 자동화 계층을 처리합니다.
각 유형의 자동화를 사용해야 하는 경우
필요할 때 GitHub App 를 사용하십시오.
- 여러 리포지토리에서 작동하는 인증 또는 권한
- 외부 시스템과 통합
- 웹후크 기반 자동화
- 수명이 긴 워크플로 또는 엔터프라이즈 전체 워크플로
- 감사 가능성 및 ID 분리
필요한 경우 외부 자동화를 사용합니다.
- GitHub 외부 또는 지속적으로 실행되는 논리
- 내부 시스템과 통합
필요한 경우 GitHub Actions 를 사용합니다.
-
CI/CD 파이프라인
-
리포지토리 범위 자동화
-
리포지토리 이벤트에 연결된 자동화된 검사
-
GitHub의 러너 인프라에서 논리 실행
**다음과 같은 경우 GitHub Apps 및 GitHub Actions를 함께** 사용합니다. -
워크플로는 리포지토리의 기본 사용 권한 이상으로 작동해야 합니다.
-
GitHub App는 워크플로를 트리거해야 합니다.
-
외부 로직이 리포지토리 내 실행을 조율합니다.
-
엔터프라이즈 차원의 정책 또는 워크플로에는 ID와 런타임이 모두 필요합니다.
다음 단계
[AUTOTITLE](/admin/managing-your-enterprise-account/creating-github-apps-for-your-enterprise)의 엔터프라이즈 수준에서 GitHub Apps을(를) 디자인하고 관리하는 방법을 알아봅니다.