배포 및 환경(Deployments and environments)

배포 및 환경(Deployments and environments)

배포 보호 규칙, 환경 시크릿, 환경 변수에 대한 정보를 알려드릴게요. 환경을 적절히 구성하면 배포를 안전하게 제어할 수 있어요.

출처: 문서

본문

배포 보호 규칙, 환경 시크릿, 환경 변수에 대한 정보를 확인할 수 있습니다.

배포 보호 규칙

배포 보호 규칙은 환경을 참조하는 잡이 진행되기 전에 특정 조건을 통과하도록 요구합니다. 배포 보호 규칙을 사용해서 수동 승인을 요구하거나, 잡을 지연시키거나, 환경을 특정 브랜치로 제한할 수 있습니다. 또한 GitHub App으로 구동되는 사용자 지정 보호 규칙을 만들어 GitHub에 구성된 환경을 참조하는 배포를 제어하는 데 제3자 시스템을 사용할 수도 있습니다.

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

[!NOTE] GitHub App 기반 배포 보호 규칙은 저장소에 얼마든지 설치할 수 있습니다. 그러나 어떤 환경에서도 동시에 최대 6개의 배포 보호 규칙을 활성화할 수 있습니다.

필수 리뷰어

필수 리뷰어를 사용해서 환경을 참조하는 워크플로 잡을 승인할 특정 사람이나 팀을 요구할 수 있습니다. 리뷰어로 최대 6명의 사용자나 팀을 나열할 수 있습니다. 리뷰어는 저장소에 대한 최소한 읽기 접근 권한이 있어야 합니다. 잡이 진행되기 위해서는 필수 리뷰어 중 한 명만 승인하면 됩니다.

또한 보호된 환경에 대한 배포의 자체 리뷰를 방지하는 옵션도 있습니다. 이 설정을 활성화하면 배포를 시작한 사용자는 필수 리뷰어라도 배포 잡을 승인할 수 없습니다. 이는 보호된 환경에 대한 배포가 항상 두 명 이상이 리뷰하도록 보장합니다.

필수 리뷰어가 있는 환경을 참조하는 잡을 리뷰하는 방법에 대한 자세한 내용은 Reviewing deployments를 참고하세요.

[!NOTE] GitHub Free, GitHub Pro, GitHub Team 플랜을 사용한다면 필수 리뷰어는 공개 저장소에서만 사용할 수 있습니다.

대기 타이머(Wait timer)

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

[!NOTE] GitHub Free, GitHub Pro, GitHub Team 플랜을 사용한다면 대기 타이머는 공개 저장소에서만 사용할 수 있습니다.

배포 브랜치 및 태그

배포 브랜치와 태그를 사용해서 환경에 배포할 수 있는 브랜치와 태그를 제한할 수 있습니다. 환경의 배포 브랜치와 태그에 대한 옵션은 다음과 같습니다:

  • 제한 없음: 환경에 배포할 수 있는 브랜치나 태그에 제한이 없습니다.

  • 보호된 브랜치만: 브랜치 보호 규칙이 활성화된 브랜치만 환경에 배포할 수 있습니다. 저장소의 어떤 브랜치에도 브랜치 보호 규칙이 정의되어 있지 않으면 모든 브랜치가 배포할 수 있습니다. 브랜치 보호 규칙에 대한 자세한 내용은 About protected branches를 참고하세요.

    [!NOTE] 보호된 브랜치와 같은 이름의 태그로 트리거된 배포 워크플로 실행과 보호된 브랜치 이름과 일치하는 브랜치가 있는 포크는 환경에 배포할 수 없습니다.

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

    배포 브랜치 또는 태그 규칙은 워크플로 실행의 GITHUB_REF와 비교됩니다. 각 워크플로 트리거에 대한 GITHUB_REF 값은 Events that trigger workflows를 참고하세요. 배포 브랜치 또는 태그 규칙으로 releases/*를 지정하면 이름이 releases/로 시작하는 GITHUB_REF만 환경에 배포할 수 있습니다. refs/pull/*/merge에 대한 브랜치 규칙을 추가하면 pull_request 이벤트로 트리거된 워크플로도 환경에 배포할 수 있습니다. 와일드카드 문자는 /와 일치하지 않으므로 release/로 시작하고 추가 단일 슬래시를 포함하는 브랜치나 태그를 일치시키려면 release/*/*를 사용하세요. 배포 브랜치의 구문 옵션에 대한 자세한 내용은 Ruby File.fnmatch 문서를 참고하세요.

    [!NOTE] 이름 패턴은 브랜치나 태그에 대해 개별적으로 구성해야 합니다.

[!NOTE] 배포 브랜치와 태그는 모든 공개 저장소에서 사용할 수 있습니다. GitHub Pro나 GitHub Team 플랜을 사용하는 사용자의 경우 배포 브랜치와 태그는 비공개 저장소에서도 사용할 수 있습니다.

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

기본적으로 관리자는 보호 규칙을 우회하고 특정 환경에 배포를 강제할 수 있습니다. 자세한 내용은 Reviewing deployments를 참고하세요.

또는 환경에 대한 모든 배포에서 보호 규칙 우회를 허용하지 않도록 환경을 구성할 수 있습니다.

[!NOTE] 관리자가 보호 규칙을 우회하도록 허용하는 것은 GitHub Free, GitHub Pro, GitHub Team 플랜 사용자에게 공개 저장소에서만 가능합니다.

사용자 지정 배포 보호 규칙

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

제3자 서비스로 배포를 게이트하기 위해 고유한 사용자 지정 보호 규칙을 활성화할 수 있습니다. 예를 들어 Datadog, Honeycomb, ServiceNow 같은 서비스를 사용해서 GitHub에 대한 배포를 자동 승인할 수 있습니다. 자세한 내용은 Creating custom deployment protection rules를 참고하세요.

사용자 지정 배포 보호 규칙이 만들어져 저장소에 설치되면 저장소의 어떤 환경에서든 사용자 지정 배포 보호 규칙을 활성화할 수 있습니다. 사용자 지정 배포 보호 규칙 구성 및 활성화에 대한 자세한 내용은 Configuring custom deployment protection rules를 참고하세요.

[!NOTE] 사용자 지정 배포 보호 규칙은 GitHub Free, GitHub Pro, GitHub Team 플랜 사용자에게 공개 저장소에서만 사용할 수 있습니다.

환경 시크릿

환경에 저장된 시크릿은 해당 환경을 참조하는 워크플로 잡에서만 사용할 수 있습니다. 환경이 승인을 요구하면 잡은 필수 리뷰어 중 한 명이 승인할 때까지 환경 시크릿에 접근할 수 없습니다. 시크릿에 대한 자세한 내용은 Secrets를 참고하세요.

[!NOTE]

  • 셀프 호스팅 러너에서 실행되는 워크플로는 환경을 사용하더라도 격리된 컨테이너에서 실행되지 않습니다. 환경 시크릿은 저장소 및 조직 시크릿과 같은 수준의 보안으로 취급해야 합니다. 자세한 내용은 Secure use reference를 참고하세요.
  • GitHub Free를 사용한다면 환경 시크릿은 공개 저장소에서만 사용할 수 있습니다. 비공개 또는 내부 저장소에서 환경 시크릿에 접근하려면 GitHub Pro, GitHub Team, GitHub Enterprise를 사용해야 합니다. 플랜 전환에 대한 자세한 내용은 Upgrading your account's plan을 참고하세요.

환경 변수

환경에 저장된 변수는 해당 환경을 참조하는 워크플로 잡에서만 사용할 수 있습니다. 이 변수들은 vars 컨텍스트를 사용해서만 접근할 수 있습니다. 자세한 내용은 Store information in variables를 참고하세요.

[!NOTE] 환경 변수는 모든 공개 저장소에서 사용할 수 있습니다. GitHub Pro나 GitHub Team 플랜을 사용하는 사용자의 경우 환경 변수는 비공개 저장소에서도 사용할 수 있습니다.

더 알아보기 (Learn more)