Skip to main content

사용자 지정 이미지 사용

조직이나 enterprise 환경에서 GitHub에서 호스팅하는 대형 러너를 위한 맞춤형 이미지를 생성하고 관리하며 활용할 수 있습니다.

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

GitHub에서 호스팅하는 대형 러너 are only available for organizations and enterprises using the GitHub Team or GitHub Enterprise Cloud plans.
Sign up for GitHub Actions

참고

사용자 지정 이미지는 공개 미리 보기에 있으며 변경될 수 있습니다.

사용자 지정 이미지

사용자 지정 이미지를 만들어 GitHub에서 호스팅하는 대형 러너에서 사용하는 정확한 환경을 정의할 수 있습니다. 사용자 지정 이미지를 사용하면 도구, 종속성 및 구성을 미리 설치하여 워크플로 속도를 높이고 작업 간에 일관성을 향상시킬 수 있습니다.

실행기에서 사용자 정의 이미지를 사용하는 경우, 이는 패키지와 이진 파일을 이미지 생성 시 한 번만 다운로드하여 매번 워크플로가 실행될 때마다 다운로드하는 대신 워크플로가 더 빠르게 완료될 수 있는 "사전 준비된 환경"으로 작동합니다. 사용자 지정 이미지에 대한 자세한 내용은 Runner 이미지를 참조하세요.

사용자 지정 이미지를 사용하는 프로세스에는 다음 세 가지 주요 단계가 포함됩니다. 1. 이미지 생성 실행기 설정: 더 큰 실행기를 만들어 사용자 지정 이미지를 빌드하고 저장합니다. 1. 사용자 지정 이미지 생성: 이미지 생성 실행기를 사용하여 워크플로를 실행하여 사용자 지정 이미지를 생성합니다. 1. 사용자 지정 이미지 설치: 사용자 지정 이미지를 사용하는 실행기를 만듭니다.

필수 조건

사용자 지정 이미지를 만들기 전에 다음 요구 사항이 충족되는지 확인합니다.

  •         **정책**: 사용자 지정 이미지는 조직 또는 기업에 대해 사용하도록 설정해야 합니다. 엔터프라이즈 소유자는 사용자 지정 이미지에 대한 액세스를 관리하고 작업 정책 설정에서 보존 정책을 설정할 수 있습니다. 자세한 내용은 [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#custom-images)을(를) 참조하세요.
    
  •         **사용 권한**: 사용자 지정 이미지를 만들고 관리하려면 조직 소유자나 엔터프라이즈 소유자이거나, `CI/CD Admin` 역할을 갖고 있거나, 다음과 같은 세분화된 권한이 있는 역할을 가져야 합니다.  
    
    • 조직에서 호스팅하는 러너의 사용자 지정 이미지 보기
    • 조직 호스팅 러너 사용자 지정 이미지 관리
    • 조직 실행기 및 실행기 그룹 관리

    자세한 내용은 사용자 지정 조직 역할의 권한을(를) 참조하세요.

이미지 생성 러너 설정

사용자 지정 이미지를 만들려면 먼저 이미지 생성 실행기를 설정해야 합니다. 실행기를 만들 때 실행기를 위해 선택한 플랫폼은 빌드하려는 이미지의 플랫폼과 일치해야 합니다. 실행기의 플랫폼은 Linux x64, Linux ARM64 또는 Windows x64일 수 있습니다.

  1. 더 큰 실행기을(를) 생성합니다.
  2. 실행기를 구성할 때 이미지 생성용 실행기에서 다음 구성을 선택합니다. * 플랫폼: 만들려는 이미지의 플랫폼과 일치하는 지원되는 플랫폼을 선택합니다(Linux x64, Linux ARM64 또는 Windows x64). * 이미지: 빌드할 이미지를 선택한 다음, 이 실행기를 사용하도록 설정하여 사용자 지정 이미지를 생성합니다.
    • GitHub소유 이미지에서 시작하거나 기본 이미지를 선택하여 깨끗한 OS에서 시작할 수 있습니다.
    • ARM64 플랫폼의 경우 미리 설치된 도구를 사용하여 ARM 유지 관리 이미지를 선택할 수도 있습니다.
    •      **러너 그룹**: 러너가 소속될 그룹을 선택합니다. 사용자 지정 이미지가 생성된 후에는 이 실행기 그룹 내의 실행기만 해당 이미지의 새 버전을 생성할 수 있습니다.
      

사용자 지정 이미지 생성

이미지 생성 실행기를 만든 후 키워드가 포함된 워크플로를 snapshot 실행하여 사용자 지정 이미지를 생성합니다.

이미지 생성을 위한 워크플로를 구성하려면 다음을 수행합니다. * runs-on 값을 사용자가 만든 이미지 생성 러너의 이름으로 설정합니다. * snapshot 아래에 표시된 문자열 구문 또는 매핑 구문을 사용하여 작업에 키워드를 추가합니다.

  • 키워드를 snapshot 포함하는 각 작업은 별도의 이미지를 만듭니다. 하나의 이미지 또는 이미지 버전만 생성하려면 모든 워크플로 단계를 단일 작업에 포함합니다.
  • 키워드를 포함하는 작업의 각 성공적인 실행은 snapshot 해당 이미지의 새 버전을 만듭니다.

참고

GitHub에서는 이미지 생성을 매주 예약된 워크플로로 구성할 것을 권장합니다. 이 접근 방식은 종속성이 최신 상태로 유지되고 최신 보안 패치를 포함하도록 보장합니다. 자세한 내용은 워크플로를 트리거하는 이벤트을(를) 참조하세요.

워크플로가 완료된 후 이미지를 완전히 생성하고 사용할 준비가 되는 데 다소 시간이 걸릴 수 있습니다. 프로비전 시간은 러너의 크기와 구성에 따라 달라지며, 더 큰 러너의 경우 몇 시간이 걸릴 수 있습니다.

이미지는 작업이 성공적으로 완료될 때만 생성됩니다. 이렇게 하면 워크플로가 실패하거나 불완전한 상태로 끝날 때 새 이미지 버전이 생성되지 않습니다.

이미지가 생성되면 워크플로에서 사용할 수 있습니다. 사용자 지정 이미지 관리에 대한 자세한 내용은 사용자 지정 이미지 관리를 참조하세요.

문자열 구문

문자열 구문을 snapshot 사용하여 이미지 이름을 정의할 수 있습니다. 이 메서드는 새 이미지를 만들거나 이름이 같은 기존 이미지에 새 버전을 추가합니다. 이 구문을 사용하여 버전 번호를 지정할 수 없습니다.

jobs: 
  build:
    runs-on: my-image-generation-runner
    snapshot: my-custom-image
    steps:
      # Add any steps to download and setup any dependencies here

매핑 구문

매핑 구문을 snapshot 사용하여 image-name와 선택적으로 version를 정의할 수 있습니다. 주 버전을 지정하면 주 버전이 이미 존재하는 경우 부 버전이 자동으로 증가합니다. 패치 버전은 지원되지 않습니다.

jobs: 
  build:
    runs-on: my-image-generation-runner
    snapshot: 
        image-name: my-custom-image
        version: 2.*
    steps:
      # Add any steps to download and setup any dependencies here

버전 관리

사용자 지정 이미지를 생성할 때 GitHub는 업데이트를 관리하고 이미지 기록을 추적하는 데 도움이 되는 버전 번호를 자동으로 할당합니다.

기본 동작

조직이나 엔터프라이즈에 지정된 이름의 이미지가 없으면 GitHub에서 초기 버전 번호가 1.0.0인 이미지를 만듭니다. 이름이 같은 이미지가 이미 있는 경우 GitHub는 부 버전 번호(예: 1.1.0, 1.2.0 등)를 증가시켜 새 버전을 만듭니다.

YAML 파일에서 버전을 지정하지 않으면 이미지 생성에서 이 기본 동작을 사용합니다.

워크플로에서 버전 지정

YAML 매핑에 버전을 포함하는 경우 GitHub에서 주 버전 번호를 먼저 확인합니다.

  • 지정된 주 버전이 이미 있는 경우 새 이미지는 다음 부 버전을 사용합니다(예: 1.0은 1.1이 됩니다).
  • 주 버전이 없으면 GitHub에서 새 주 버전(예: 2.0)을 만듭니다.

패치 버전은 지원되지 않습니다.

최신 태그

이미지에 대한 가장 최근 워크플로 실행은 항상 최신으로 태그가 지정됩니다. YAML에서 이전 주 버전(예: 버전: 2.0 버전이 있는 경우 1.*)을 지정하는 경우 GitHub는 이전 주 버전에서 새 부 버전을 생성하고 최신 버전으로 표시합니다.

참고

GitHub 호스팅 대형 러너를 생성할 때는 이미지 버전에 와일드카드를 사용할 수 없습니다.

사용자 지정 이미지에 대한 청구 및 스토리지

사용자 지정 이미지를 사용하는 작업은 이미지를 사용하는 더 큰 실행기와 동일한 분당 요금으로 청구됩니다. 사용자 지정 이미지에 대한 스토리지는 GitHub Actions 스토리지를 통해 별도로 청구됩니다.

이미지를 자주 다시 빌드하고 이전 버전을 유지하는 경우 키워드를 포함하는 snapshot 성공적인 워크플로 작업마다 새 이미지 버전이 생성되므로 스토리지 사용량이 빠르게 증가할 수 있습니다. 자세한 내용은 GitHub Actions 비용 청구엔터프라이즈에서 GitHub Actions 대한 정책 적용을(를) 참조하세요.

사용자 지정 이미지 관리

각 이미지에 대한 자세한 정보를 보고, 사용되지 않는 이미지 또는 특정 버전을 삭제하고, 시간에 따라 이미지 버전을 추적할 수 있습니다.

  1. GitHub에서 조직의 기본 페이지로 이동합니다. 데이터 재사용 가능 요소.조직.조직_설정 %} 데이터 재사용 가능 요소.조직.설정-사이드바-작업-맞춤형-이미지 %}
  2. "사용자 지정 이미지" 페이지에서 조직 또는 엔터프라이즈에서 만든 모든 사용자 지정 이미지를 볼 수 있습니다.
  3. 특정 이미지에 대한 세부 정보를 보려면 이미지 이름을 클릭합니다.

사용자 지정 이미지 설치

사용자 지정 이미지가 준비되면 새 에 설치 가능합니다.

  1. 다음 절차에 따라 더 큰 실행기을(를) 생성할 수 있습니다.

  2. 실행기를 구성할 때: * 플랫폼: 이미지를 생성하는 데 사용한 것과 동일한 플랫폼(Linux x64, Linux ARM64 또는 Windows x64)을 선택합니다. * 이미지: 사용자 지정 탭을 선택한 다음 목록에서 사용자 지정 이미지를 선택합니다.

    • 이미지가 표시되지 않는 경우 올바른 플랫폼을 선택했고 이미지가 생성된 동일한 수준(조직 또는 엔터프라이즈)에서 실행기를 만들고 있는지 확인합니다.
    •      **이미지 버전**: 최신 버전을 자동으로 사용하려면 **최신** 버전을 선택하거나 특정 버전 번호를 선택하여 실행기를 해당 버전에 고정합니다.
      
      * Latest를 선택하면 새 버전의 이미지를 사용할 수 있게 되면 실행기에서 자동으로 업데이트됩니다. 실행기를 특정 버전에 고정하는 경우 나중에 업그레이드하려면 실행기를 수동으로 편집해야 합니다.
    •      **크기**: 이미지 크기보다 크거나 같은 저장 공간을 가진 실행기 크기를 선택합니다. 예를 들어 이미지가 8코어 실행기에서 생성된 경우 8코어 이상의 이미지를 선택하여 이 이미지를 실행합니다.
      
    •      **실행기 그룹**: 이 이미지를 사용해야 하는 리포지토리와 공유되는 실행기 그룹에 실행기를 할당합니다.
      
  3. GitHub Actions 워크플로를 구성할 때 실행기 이름을 runs-on 키에 지정해 주시기 바랍니다.

    jobs: 
      build:
        runs-on: my-custom-runner
        steps:
        # Add any steps for your workflow here
    
  4. 워크플로를 실행하여 성공적으로 완료되었는지 확인합니다. 작업 로그는 "작업 설정" 섹션에 이미지 이름과 버전을 표시합니다.

사용자 지정 이미지에 대한 보안 모범 사례

이미지의 무단 변경을 방지하려면 다음 모범 사례를 따르세요.

  •         **이미지 생성에 전용 실행기 그룹을 사용합니다.** 프로덕션 이미지를 생성하는 러너는 전용 러너 그룹에 남아 있어야 합니다. 개발 또는 테스트 리포지토리에 액세스할 수 있는 모든 사용자가 프로덕션 이미지에 악성 코드를 삽입할 수 있으므로 프로덕션 및 개발 또는 테스트 리포지토리 간에 실행기 그룹을 공유하지 마세요.
    
  •         **공용 리포지토리에서 이미지 생성 실행기 액세스는 허용하지 않습니다.** 이미지 생성 실행기를 사용할 수 있는 리포지토리를 필요한 리포지토리로만 제한하고 정기적으로 액세스를 검토합니다.
    
  •         **리포지토리에 최소 권한을 적용합니다.** 이미지 생성 실행기 액세스 권한이 있는 리포지토리에 대한 조직 전체 `write` 액세스 권한을 부여하지 않습니다. 모든 분기에서 이미지를 생성할 수 있으므로 쓰기 액세스 권한이 있는 사용자는 임의의 코드로 분기를 만들고 이미지 생성을 트리거할 수 있습니다.