일반적으로 자동화에는 GitHub 여러 구성 요소가 함께 작동합니다. 가장 중요한 GitHub 네이티브 구성 요소는 다음과 같습니다.
- GitHub Actions 워크플로- 자동화 논리를 실행하기 위한 런타임을 제공합니다. 즉, 단일 리포지토리 내에서 작동하지만 리포지토리 전체 또는 외부에서 자동화하도록 확장할 수 있습니다.
- GitHub Apps- 런타임이 없습니다. 대신 외부 서비스 또는 워크플로에 관계없이 자동화가 안전하게 인증되고 작동할 수 있도록 ID, 권한 및 이벤트 배달을 제공합니다.
대부분의 엔터프라이즈 자동화는 함께 사용합니다 GitHub AppsGitHub Actions . 예를 들어, GitHub Actions에서 실행 중인 워크플로는 여러 리포지토리 또는 조직 전반에서 작업을 수행할 수 있게 해 주는 수명이 짧은 토큰을 얻기 위해 GitHub App를 사용할 수 있습니다.
이 가이드에서는 GitHub Apps외부 자동화, 상호 보완 방법 및 GitHub Actions 엔터프라이즈에서 각각을 사용하는 경우에 대해 설명합니다.
GitHub Apps
A GitHub App 는 리포지토리, 조직 또는 엔터프라이즈에서 자동화하는 데 필요한 ID, 권한 및 웹후크 이벤트를 제공합니다. GitHub Apps 자체는 로직을 실행하지 않으며, 다른 시스템이 이를 실행할 수 있도록 합니다.
GitHub Apps 다음을 제공하여 엔터프라이즈 자동화를 지원합니다.
- 세분화된 접근 권한을 사용하여 최소 권한 원칙을 따르다
- 엔터프라이즈, 조직 또는 리포지토리 수준에서 설치 범위 지정
- 보안 액세스를 위한 수명이 짧은 토큰
- 완전한 감사 기능을 갖춘 고유 ID
- 관리자 역할을 통해 ****GitHub App
-
엔터프라이즈 계정 소유 시 **대규모 일관성**
GitHub Apps으로 무엇을 사용할 수 있습니까?
GitHub Apps 외부 서비스 또는 워크플로 단계와 같이 다른 곳에서 작성하는 자동화가 부여한 권한 내에서 API에 GitHub 대해 작동할 수 있도록 허용합니다. 다음은 그 예입니다.
- 웹후크 이벤트 수신 및 외부 서비스 트리거
- 워크플로가 기본 리포지토리 범위 외부에서 작동하도록 설정
- 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을(를) 사용하세요.
- 장기 실행 또는 엔터프라이즈 간 논리 실행
- 외부 비즈니스 시스템과 통합
예를 들면 다음과 같습니다.
- 조직 전체 구성 관리
- 정책 적용 서비스
- 다중 리포지토리 코드 또는 메타데이터 동기화
- 준수 보고서 생성
- 조직 간 문제 또는 끌어오기 요청 관리
이러한 모든 항목은 실행을 위한 것이 아니라 인증, ID 및 이벤트를 위해 GitHub Apps에 의존합니다.
이러한 구성 요소가 함께 작동하는 방법
대부분의 엔터프라이즈 자동화는 GitHub Apps, 외부 서비스, 그리고 GitHub Actions의 조합을 사용해 견고하고 확장 가능한 워크플로를 구현합니다.
다음은 그 예입니다.
- 엔터프라이즈 GitHub App 는 새 리포지토리를 만들 때 웹후크를 수신하고 웹후크 페이로드를 외부 서비스가 실행 중인 서버로 보냅니다.
- 외부 서비스는 필요한 설정을 표준화하고 리소스를 프로비전합니다.
- 서비스는 리포지토리에서 워크플로를 트리거합니다 GitHub Actions .
- 워크플로는 CI를 수행하거나, 템플릿을 배포하거나, 검사를 구성합니다.
각 구성 요소는 다른 자동화 계층을 처리합니다.
각 유형의 자동화를 사용해야 하는 경우
다음이 필요한 경우 a GitHub App 사용:
- 여러 리포지토리에서 작동하는 인증 또는 권한
- 외부 시스템과 통합
- 웹후크 기반 자동화
- 수명이 긴 워크플로 또는 엔터프라이즈 전체 워크플로
- 감사 가능성 및 ID 분리
필요한 경우 외부 자동화를 사용합니다.
- 지속적으로 또는 외부에서 실행되는 논리 GitHub
- 내부 시스템과 통합
필요한 경우 다음을 사용합니다 GitHub Actions .
- CI/CD 파이프라인
- 리포지토리 범위 자동화
- 리포지토리 이벤트에 연결된 자동화된 검사
- GitHub의 runner 인프라를 사용한 논리 실행
** GitHub Apps 및 GitHub Actions를 함께 사용하는 경우:**
- 워크플로는 리포지토리의 기본 사용 권한 이상으로 작동해야 합니다.
- GitHub App 워크플로를 트리거해야 합니다.
- 외부 로직이 리포지토리 내 실행을 조율합니다.
- 엔터프라이즈 차원의 정책 또는 워크플로에는 ID와 런타임이 모두 필요합니다.