Skip to main content

배포 환경 관리

배포 보호 규칙을 사용하여 환경을 만들고 해당 환경을 보호할 수 있습니다. 환경을 참조하는 작업은 환경에 대한 모든 보호 규칙을 따라야 환경의 비밀을 실행하거나 액세스할 수 있습니다.

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

Repository owners

Environments, environment secrets, and deployment protection rules are available in public repositories for all current GitHub plans. They are not available on legacy plans, such as Bronze, Silver, or Gold. For access to environments, environment secrets, and deployment branches in private or internal repositories, you must use GitHub Pro, GitHub Team, or GitHub Enterprise. If you are on a GitHub Free, GitHub Pro, or GitHub Team plan, other deployment protection rules, such as a wait timer or required reviewers, are only available for public repositories.

환경 정보

환경은 일반적인 배포 대상(예: production, staging 또는 development)을 설명하는 데 사용됩니다. GitHub Actions 워크플로가 환경에 배포되면 환경이 리포지토리의 기본 페이지에 표시됩니다. 환경에 대한 배포 보기에 대한 자세한 내용은 배포 기록 보기을(를) 참조하세요.

보호 규칙 및 비밀을 사용하여 환경을 구성할 수 있습니다. 워크플로 작업이 환경을 참조하는 경우 환경의 모든 보호 규칙이 통과될 때까지 작업이 시작되지 않습니다. 또한 작업은 모든 배포 보호 규칙이 통과될 때까지 환경에 정의된 비밀에 액세스할 수 없습니다.

필요에 따라 환경의 보호 규칙을 무시하고 환경을 참조하는 보류 중인 모든 작업을 강제로 진행할 수 있습니다. 자세한 내용은 배포 검토을(를) 참조하세요.

Note

GitHub Free 플랜을 가진 사용자는 퍼블릭 리포지토리에 대한 환경만 구성할 수 있습니다. 리포지토리를 퍼블릭에서 프라이빗으로 변환하는 경우 구성된 보호 규칙 또는 환경 비밀은 무시되며 환경을 구성할 수 없습니다. 리포지토리를 다시 퍼블릭으로 변환하는 경우 이전에 구성된 보호 규칙 및 환경 비밀에 액세스할 수 있습니다.

GitHub Team이 있는 조직과 GitHub Pro이(가) 있는 사용자는 프라이빗 리포지토리에 대한 환경을 구성할 수 있습니다. 자세한 내용은 GitHub의 플랜을(를) 참조하세요.

배포 보호 규칙

배포 보호 규칙에는 환경을 참조하는 작업이 계속 진행되기 전에 전달해야 하는 특정 조건이 필요합니다. 배포 보호 규칙을 사용하여 수동 승인을 요구하거나, 작업을 지연시키거나, 환경을 특정 분기로 제한할 수 있습니다. 또한 GitHub Apps으로 구동되는 사용자 지정 보호 규칙을 만들고 구현하여 타사 시스템을 사용하여 GitHub에 구성된 환경을 참조하는 배포를 제어할 수도 있습니다.

타사 시스템은 관찰성 시스템, 변경 관리 시스템, 코드 품질 시스템 또는 환경에 배포를 안전하게 롤아웃하기 전에 준비 상태를 평가하는 데 사용하는 기타 수동 구성일 수 있습니다.

Note

리포지토리에 GitHub Apps 기반 배포 보호 규칙을 원하는 만큼 설치할 수 있습니다. 하지만 환경에 상관없이 배포 보호 규칙은 동시에 6개까지만 사용하도록 설정할 수 있습니다.

필수 검토자

필수 검토자를 사용하여 특정 사용자 또는 팀이 환경을 참조하는 워크플로 작업을 승인하도록 요구합니다. 최대 6명의 사용자 또는 팀을 검토자로 나열할 수 있습니다. 검토자는 적어도 리포지토리에 대한 읽기 권한이 있어야 합니다. 작업을 계속하려면 필수 검토자 중 한 명만 작업을 승인하면 됩니다.

보호된 환경으로 배포에 대한 자체 검토를 방지하는 옵션도 있습니다. 이 옵션을 사용하면 배포를 시작하는 사용자가 필수 검토자인 경우에도 배포 작업을 승인할 수 없습니다. 이렇게 하면 보호된 환경에 대한 배포를 항상 두 명 이상이 검토하게 됩니다.

필수 검토자가 있는 환경을 참조하는 작업을 검토하는 방법에 대한 자세한 내용은 배포 검토을(를) 참조하세요.

Note

GitHub Free, GitHub Pro 또는 GitHub Team 플랜을 사용 중인 경우 필수 검토자는 퍼블릭 리포지토리에만 사용할 수 있습니다.

대기 타이머

대기 타이머를 사용하여 작업이 처음 트리거된 후 특정 시간 동안 작업을 지연시킵니다. 시간(분)은 1에서 43,200(30일) 사이의 정수여야 합니다. 대기 시간은 청구 가능한 시간에 포함되지 않습니다.

Note

GitHub Free, GitHub Pro 또는 GitHub Team 플랜을 사용 중인 경우 대기 타이머는 퍼블릭 리포지토리에만 사용할 수 있습니다.

배포 분기 및 태그

배포 분기 및 태그를 사용하여 환경에 배포할 수 있는 분기 및 태그를 제한합니다. 다음은 환경에 대한 배포 분기 및 태그에 대한 옵션입니다.

  • 제한 없음: 환경에 배포할 수 있는 분기 또는 태그에 대한 제한이 없습니다.

  • 보호된 분기 전용: 분기 보호 규칙이 사용하도록 설정된 분기만 환경에 배포할 수 있습니다. 리포지토리의 모든 분기에 정의된 분기 보호 규칙이 없는 경우 모든 분기를 배포할 수 있습니다. 브랜치 보호 규칙에 대한 자세한 내용은 보호된 분기 정보을(를) 참조하세요.

    Note

    배포 워크플로는 보호된 분기 이름이 같은 태그에 의해 트리거되고 보호된 분기 이름과 일치하는 분기가 있는 포크는 환경에 배포할 수 없습니다.

  • 선택한 분기 및 태그: 지정된 이름 패턴과 일치하는 분기 및 태그만 환경에 배포할 수 있습니다.

    releases/*을(를) 배포 분기 또는 태그 규칙으로 지정하는 경우 releases/(으)로 이름이 시작되는 분기 또는 태그만 환경에 배포할 수 있습니다. (와일드카드 문자는 /와(과) 일치하지 않습니다. release/(으)로 시작되고 추가 단일 슬래시를 포함하는 분기 또는 태그를 일치시키려면 release/*/*을(를) 사용합니다.) main을(를) 배포 분기 규칙으로 추가하는 경우 main(으)로 명명된 분기도 환경에 배포할 수 있습니다. 배포 분기에 대한 구문 옵션에 대한 자세한 내용은 Ruby File.fnmatch 설명서를 참조하세요.

    Note

    이름 패턴은 분기나 태그에 대해 개별적으로 구성해야 합니다.

Note

배포 분기 및 태그는 모든 퍼블릭 리포지토리에 사용할 수 있습니다. GitHub Pro 또는 GitHub Team 플랜을 사용 중인 사용자의 경우 프라이빗 리포지토리에도 배포 분기 및 태그를 사용할 수 있습니다.

관리자가 구성된 보호 규칙을 무시하도록 허용

기본적으로 관리자는 보호 규칙을 무시하고 특정 환경에 배포를 강제 적용할 수 있습니다. 자세한 내용은 배포 검토을(를) 참조하세요.

또는 환경에 대한 모든 배포에 대한 보호 규칙을 무시할 수 없도록 환경을 구성할 수 있습니다.

Note

관리자가 보호 규칙을 무시할 수 있도록 허용은 GitHub Free, GitHub Pro, GitHub Team 플랜을 사용 중인 사용자에 대한 퍼블릭 리포지토리에만 사용할 수 있습니다.

사용자 지정 배포 보호 규칙

Note

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

타사 서비스를 사용하여 배포를 제어하는 사용자 지정 보호 규칙을 사용하도록 설정할 수 있습니다. 예를 들어 Datadog, Honeycomb, ServiceNow와 같은 서비스를 사용하여 GitHub에 대한 배포에 자동화된 승인을 제공할 수 있습니다. 자세한 내용은 사용자 지정 배포 보호 규칙 만들기을(를) 참조하세요.

사용자 지정 배포 보호 규칙이 만들어지고 리포지토리에 설치되면 리포지토리의 모든 환경에 대해 사용자 지정 배포 보호 규칙을 사용하도록 설정할 수 있습니다. 사용자 지정 배포 보호 규칙을 구성하고 사용하도록 설정하는 방법에 대한 자세한 내용은 사용자 지정 배포 보호 규칙 구성을(를) 참조하세요.

Note

사용자 지정 배포 보호 규칙은 GitHub Free, GitHub Pro, GitHub Team 플랜을 사용 중인 사용자에 대한 퍼블릭 리포지토리에만 사용할 수 있습니다.

환경 비밀

환경에 저장된 비밀은 환경을 참조하는 워크플로 작업에서만 사용할 수 있습니다. 환경에 승인이 필요한 경우 필수 검토자 중 한 명이 승인할 때까지 작업에서 환경 비밀에 액세스할 수 없습니다. 비밀에 대한 자세한 내용은 GitHub Actions에서 비밀 사용을(를) 참조하세요.

Note

  • 자체 호스트형 실행기에서 실행되는 워크플로는 환경을 사용하는 경우에도 격리된 컨테이너에서 실행되지 않습니다. 환경 비밀을 리포지토리 및 조직 비밀과 동일한 수준의 보안으로 취급해야 합니다. 자세한 내용은 GitHub Actions에 대한 보안 강화을(를) 참조하세요.
  • GitHub Free를 사용하는 경우에만 퍼블릭 리포지토리에서 환경 비밀을 사용할 수 있습니다. 프라이빗 또는 내부 리포지토리의 환경 비밀에 액세스하려면 GitHub Pro, GitHub Team, GitHub Enterprise을(를) 사용해야 합니다. 플랜 전환에 대한 자세한 내용은 계정 요금제 업그레이드하기을(를) 참조하세요.

환경 변수

환경에 저장된 변수는 환경을 참조하는 워크플로 작업에서만 사용할 수 있습니다. 이러한 변수는 vars 컨텍스트를 통해서만 액세스할 수 있습니다. 자세한 내용은 변수에 정보 저장을(를) 참조하세요.

Note

환경 변수는 모든 퍼블릭 리포지토리에 사용할 수 있습니다. GitHub Pro 또는 GitHub Team 플랜을 사용 중인 사용자의 경우 프라이빗 리포지토리에도 환경 변수를 사용할 수 있습니다.

환경 만들기

개인 계정 리포지토리에서 환경을 구성하려면 리포지토리 소유자여야 합니다. 조직 리포지토리에서 환경을 구성하려면 admin 액세스 권한이 있어야 합니다.

Note

  • 프라이빗 리포지토리에서 환경 만들기는 GitHub Team이(가) 있는 조직 및 GitHub Pro이(가) 있는 사용자에게 제공됩니다.
  • 환경에 대한 일부 기능은 프라이빗 리포지토리에 대한 가용성이 없거나 제한됩니다. 아래 지침에 설명된 기능에 액세스할 수 없는 경우 관련 단계에서 연결된 설명서에서 가용성 정보를 확인하세요.
  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 설정을 클릭합니다. "설정" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 설정을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "설정" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 왼쪽 사이드바에서 환경을 클릭합니다.

  4. 새 환경을 클릭합니다.

  5. 환경의 이름을 입력한 다음 환경 구성을 클릭합니다. 환경 이름은 대/소문자를 구분하지 않습니다. 환경 이름은 255자를 초과하지 않아야 하며 리포지토리 내에서 고유해야 합니다.

  6. 필요에 따라 이 환경을 사용하는 워크플로 작업을 승인해야 하는 사용자 또는 팀을 지정합니다. 자세한 내용은 필수 검토자를 참조하세요.

    1. 필수 검토자를 선택합니다.
    2. 최대 6명 또는 팀을 입력합니다. 작업을 계속하려면 필수 검토자 중 한 명만 작업을 승인하면 됩니다.
    3. 필요에 따라 사용자가 트리거한 워크플로 실행을 승인하지 못하도록 하려면 자체 검토 방지를 선택합니다.
    4. 보호 규칙 저장을 클릭합니다.
  7. 필요에 따라 이 환경을 사용하는 워크플로 작업을 계속 진행하도록 허용하기 전에 대기할 시간을 지정합니다. 자세한 내용은 대기 타이머를 참조하세요.

    1. 대기 타이머를 선택합니다.
    2. 대기할 시간(분)을 입력합니다.
    3. 보호 규칙 저장을 클릭합니다.
  8. 필요에 따라 구성된 보호 규칙을 바이패스할 수 없습니다. 자세한 내용은 관리자가 구성된 보호 규칙을 무시하도록 허용을 참조하세요.

    1. 관리자가 구성된 보호 규칙을 무시하도록 허용을 선택 취소합니다.
    2. 보호 규칙 저장을 클릭합니다.
  9. 필요에 따라 GitHub Apps을(를) 사용하여 만든 사용자 지정 배포 보호 규칙을 사용하도록 설정합니다. 자세한 내용은 사용자 지정 배포 보호 규칙을 참조하세요.

    1. 사용하도록 설정할 사용자 지정 보호 규칙을 선택합니다.
    2. 보호 규칙 저장을 클릭합니다.
  10. 필요에 따라 이 환경에 배포할 수 있는 분기 및 태그를 지정합니다. 자세한 정보는 배포 분기 및 태그를 참조하세요.

    1. 배포 분기 드롭다운에서 원하는 옵션을 선택합니다.

    2. 선택한 분기 및 태그 를 선택한 경우 새 규칙을 추가하려면 배포 분기 또는 태그 규칙 추가 1을 클릭합니다. 적용할 규칙에 따라 “참조 유형” 드롭다운 메뉴에서 분기 또는 태그를 클릭합니다.

    3. 허용하려는 분기 또는 태그의 이름 패턴을 입력합니다.

      Note

      이름 패턴은 분기나 태그에 대해 개별적으로 구성해야 합니다.

    4. 규칙 추가를 클릭합니다.

  11. 필요에 따라 환경 비밀을 추가합니다. 해당 비밀은 환경을 사용하는 워크플로 작업에서만 사용할 수 있습니다. 또한 이 환경을 사용하는 워크플로 작업은 구성된 규칙(예: 필수 검토자)이 통과한 후에만 해당 비밀에 액세스할 수 있습니다. 자세한 내용은 환경 비밀을 참조하세요.

    1. 환경 비밀에서 비밀 추가를 클릭합니다.
    2. 비밀 이름을 입력합니다.
    3. 비밀 값을 입력합니다.
    4. 비밀 추가를 클릭합니다.
  12. 필요에 따라 환경 변수를 추가합니다. 이러한 변수는 환경을 사용하는 워크플로 작업에서만 사용할 수 있으며 vars 컨텍스트를 통해서만 액세스할 수 있습니다. 자세한 내용은 환경 변수를 참조하세요.

    1. 환경 변수에서** 변수 추가**를 클릭합니다.
    2. 변수 이름을 입력합니다.
    3. 변수 값을 입력합니다.
    4. 변수 추가를 클릭합니다.

REST API를 통해 환경을 만들고 구성할 수도 있습니다. 자세한 내용은 Deployment Environments에 대한 REST API 엔드포인트, GitHub Actions 비밀에 대한 REST API 엔드포인트, GitHub Actions 변수에 대한 REST API 엔드포인트, 배포 분기 정책에 대한 REST API 엔드포인트을(를) 참조하세요.

존재하지 않는 환경을 참조하는 워크플로를 실행하면 참조된 이름을 가진 환경이 생성됩니다. 암시적 페이지 빌드를 실행하여 환경을 만드는 경우(예: 분기 또는 폴더 원본에서) 원본 분기가 환경에 보호 규칙으로 추가됩니다. 그렇지 않으면 새로 만든 환경에는 보호 규칙이나 비밀이 구성되지 않습니다. 리포지토리에서 워크플로를 편집할 수 있는 사람은 누구나 워크플로 파일을 통해 환경을 만들 수 있지만 리포지토리 관리자만 환경을 구성할 수 있습니다.

환경 삭제

개인 계정 리포지토리에서 환경을 구성하려면 리포지토리 소유자여야 합니다. 조직 리포지토리에서 환경을 구성하려면 admin 액세스 권한이 있어야 합니다.

환경을 삭제하면 환경과 연결된 모든 비밀 및 보호 규칙이 삭제됩니다. 삭제된 환경의 보호 규칙으로 인해 현재 대기 중인 모든 작업은 자동으로 실패합니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 설정을 클릭합니다. "설정" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 설정을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "설정" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 왼쪽 사이드바에서 환경을 클릭합니다.

  4. 삭제하려는 환경 옆에 있는 을(를) 클릭합니다.

  5. 이해했습니다. 이 환경을 삭제합니다를 클릭합니다.

REST API를 통해 환경을 삭제할 수도 있습니다. 자세한 내용은 리포지토리에 대한 REST API 엔드포인트을(를) 참조하세요.

환경과 배포 간의 관계

환경을 참조하는 워크플로 작업이 실행되면 환경 이름으로 설정된 environment 속성이 있는 배포 개체를 만듭니다. 워크플로가 진행됨에 따라 환경 이름으로 설정된 environment 속성, 환경의 URL로 설정된 environment_url 속성(워크플로에 지정된 경우), 작업의 상태로 설정된 state 속성이 있는 배포 상태 개체도 만듭니다.

REST API 또는 GraphQL API를 통해 해당 개체에 액세스할 수 있습니다. 해당 웹후크 이벤트를 구독할 수도 있습니다. 자세한 내용은 리포지토리에 대한 REST API 엔드포인트, 개체(GraphQL API), 웹후크 이벤트 및 페이로드을(를) 참조하세요.

다음 단계

GitHub Actions은(는) 배포를 관리하기 위한 몇 가지 기능을 제공합니다. 자세한 내용은 GitHub Actions를 사용하여 배포을(를) 참조하세요.