참고
사용자 지정 이미지는 공개 미리 보기에 있으며 변경될 수 있습니다.
사용자 지정 이미지
사용자 지정 이미지를 만들어 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일 수 있습니다.
- 더 큰 실행기을(를) 생성합니다.
- 조직의 경우 조직에 더 큰 러너 추가하기를 참조하세요.
- 기업의 경우, 더 큰 러너를 기업에 추가하는 방법에 대해서는 엔터프라이즈에 더 큰 러너 추가를 참조하세요.
- 실행기를 구성할 때 이미지 생성용 실행기에서 다음 구성을 선택합니다.
*
플랫폼: 만들려는 이미지의 플랫폼과 일치하는 지원되는 플랫폼을 선택합니다(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 대한 정책 적용을(를) 참조하세요.
사용자 지정 이미지 관리
각 이미지에 대한 자세한 정보를 보고, 사용되지 않는 이미지 또는 특정 버전을 삭제하고, 시간에 따라 이미지 버전을 추적할 수 있습니다.
- GitHub에서 조직의 기본 페이지로 이동합니다. 데이터 재사용 가능 요소.조직.조직_설정 %} 데이터 재사용 가능 요소.조직.설정-사이드바-작업-맞춤형-이미지 %}
- "사용자 지정 이미지" 페이지에서 조직 또는 엔터프라이즈에서 만든 모든 사용자 지정 이미지를 볼 수 있습니다.
- 특정 이미지에 대한 세부 정보를 보려면 이미지 이름을 클릭합니다.
사용자 지정 이미지 설치
사용자 지정 이미지가 준비되면 새 에 설치 가능합니다.
-
다음 절차에 따라 더 큰 실행기을(를) 생성할 수 있습니다.
- 조직의 경우 조직에 더 큰 러너 추가하기를 참조하세요.
- 기업의 경우, 더 큰 러너를 기업에 추가하는 방법에 대해서는 엔터프라이즈에 더 큰 러너 추가를 참조하세요.
-
실행기를 구성할 때: * 플랫폼: 이미지를 생성하는 데 사용한 것과 동일한 플랫폼(Linux x64, Linux ARM64 또는 Windows x64)을 선택합니다. * 이미지: 사용자 지정 탭을 선택한 다음 목록에서 사용자 지정 이미지를 선택합니다.
- 이미지가 표시되지 않는 경우 올바른 플랫폼을 선택했고 이미지가 생성된 동일한 수준(조직 또는 엔터프라이즈)에서 실행기를 만들고 있는지 확인합니다.
-
* Latest를 선택하면 새 버전의 이미지를 사용할 수 있게 되면 실행기에서 자동으로 업데이트됩니다. 실행기를 특정 버전에 고정하는 경우 나중에 업그레이드하려면 실행기를 수동으로 편집해야 합니다.**이미지 버전**: 최신 버전을 자동으로 사용하려면 **최신** 버전을 선택하거나 특정 버전 번호를 선택하여 실행기를 해당 버전에 고정합니다. -
**크기**: 이미지 크기보다 크거나 같은 저장 공간을 가진 실행기 크기를 선택합니다. 예를 들어 이미지가 8코어 실행기에서 생성된 경우 8코어 이상의 이미지를 선택하여 이 이미지를 실행합니다. -
**실행기 그룹**: 이 이미지를 사용해야 하는 리포지토리와 공유되는 실행기 그룹에 실행기를 할당합니다.
-
GitHub Actions 워크플로를 구성할 때 실행기 이름을
runs-on키에 지정해 주시기 바랍니다.jobs: build: runs-on: my-custom-runner steps: # Add any steps for your workflow here -
워크플로를 실행하여 성공적으로 완료되었는지 확인합니다. 작업 로그는 "작업 설정" 섹션에 이미지 이름과 버전을 표시합니다.
사용자 지정 이미지에 대한 보안 모범 사례
이미지의 무단 변경을 방지하려면 다음 모범 사례를 따르세요.
-
**이미지 생성에 전용 실행기 그룹을 사용합니다.** 프로덕션 이미지를 생성하는 러너는 전용 러너 그룹에 남아 있어야 합니다. 개발 또는 테스트 리포지토리에 액세스할 수 있는 모든 사용자가 프로덕션 이미지에 악성 코드를 삽입할 수 있으므로 프로덕션 및 개발 또는 테스트 리포지토리 간에 실행기 그룹을 공유하지 마세요. -
**공용 리포지토리에서 이미지 생성 실행기 액세스는 허용하지 않습니다.** 이미지 생성 실행기를 사용할 수 있는 리포지토리를 필요한 리포지토리로만 제한하고 정기적으로 액세스를 검토합니다. -
**리포지토리에 최소 권한을 적용합니다.** 이미지 생성 실행기 액세스 권한이 있는 리포지토리에 대한 조직 전체 `write` 액세스 권한을 부여하지 않습니다. 모든 분기에서 이미지를 생성할 수 있으므로 쓰기 액세스 권한이 있는 사용자는 임의의 코드로 분기를 만들고 이미지 생성을 트리거할 수 있습니다.