GitHub 호스팅 실행기 개요
실행기는 GitHub Actions 워크플로에서 작업을 실행하는 머신입니다. 예를 들어 실행기는 리포지토리를 로컬로 복제하고, 테스트 소프트웨어를 설치한 다음, 코드를 평가하는 명령을 실행할 수 있습니다.
GitHub는 작업을 실행하는 데 사용할 수 있는 실행기를 제공하거나 사용자 고유의 실행기를 호스트할 수 있습니다. 각 GitHub 호스팅 실행기는 실행기 애플리케이션 및 기타 도구가 미리 설치된 GitHub에서 호스트하는 새 VM(가상 머신)이며 Ubuntu Linux, Windows 또는 macOS 운영 체제에서 사용할 수 있습니다. GitHub 호스팅 실행기를 사용하면 머신 유지 관리 및 업그레이드가 자동으로 처리됩니다.
GitHub 호스팅 실행기 사용
GitHub 호스팅 실행기를 사용하려면 작업을 만들고 runs-on
을 이용해 ubuntu-latest
, windows-latest
, macos-latest
등과 같이 작업을 처리할 실행기 유형을 지정합니다. 실행기 유형의 전체 목록은 "GitHub 호스팅 실행기 사용"을(를) 참조하세요. 리포지토리에 대한 repo: write
액세스 권한이 있는 경우 리포지토리의 워크플로에서 사용할 수 있는 실행기 목록을 볼 수 있습니다. 자세한 내용은 "리포지토리에 사용 가능한 실행기 보기"를 참조하세요.
작업이 시작되면 GitHub가 해당 작업에 대한 새 VM을 자동으로 프로비저닝합니다. 모든 작업 단계는 VM에서 실행되며 실행기의 파일 체계를 사용하는 정보를 공유합니다. VM 또는 Docker 컨테이너에서 직접 워크플로를 실행할 수 있습니다. 작업이 완료되면 VM이 자동으로 서비스 해제됩니다.
다음 다이어그램은 하나의 워크플로에 속한 두 개의 작업이 어떤 방식을 통해 두 개의 서로 다른 GitHub 호스팅 실행기를 통해 실행되는지를 보여 줍니다.
예시된 다음 워크플로에는 Run-npm-on-Ubuntu
, Run-PSScriptAnalyzer-on-Windows
두 개의 작업이 있습니다. 이 워크플로가 트리거되면 GitHub는 각 작업에 대해 새 가상 머신을 프로비저닝합니다.
- 이름이
Run-npm-on-Ubuntu
인 작업은 작업의runs-on:
이ubuntu-latest
를 지정하므로 Linux VM에서 실행됩니다. - 이름이
Run-PSScriptAnalyzer-on-Windows
인 작업은 작업의runs-on:
가windows-latest
를 지정하므로 Windows VM에서 실행됩니다.
name: Run commands on different operating systems on: push: branches: [ main ] pull_request: branches: [ main ] jobs: Run-npm-on-Ubuntu: name: Run npm on Ubuntu runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: node-version: '14' - run: npm help Run-PSScriptAnalyzer-on-Windows: name: Run PSScriptAnalyzer on Windows runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Install PSScriptAnalyzer module shell: pwsh run: | Set-PSRepository PSGallery -InstallationPolicy Trusted Install-Module PSScriptAnalyzer -ErrorAction Stop - name: Get list of rules shell: pwsh run: | Get-ScriptAnalyzerRule
name: Run commands on different operating systems
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
Run-npm-on-Ubuntu:
name: Run npm on Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm help
Run-PSScriptAnalyzer-on-Windows:
name: Run PSScriptAnalyzer on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install PSScriptAnalyzer module
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module PSScriptAnalyzer -ErrorAction Stop
- name: Get list of rules
shell: pwsh
run: |
Get-ScriptAnalyzerRule
작업이 실행되는 동안 GitHub UI에서 로그 및 출력을 볼 수 있습니다.
GitHub Actions 실행기 애플리케이션이 오픈 소스입니다. 실행기 리포지토리에서 기여하고 문제를 제출할 수 있습니다.
리포지토리에 사용 가능한 실행기 보기
참고: 이 기능은 현재 베타로 제공되며 변경될 수 있습니다.
리포지토리에 repo: write
액세스 권한이 있는 경우 리포지토리에서 사용할 수 있는 실행기 목록을 볼 수 있습니다.
-
GitHub.com에서 리포지토리의 기본 페이지로 이동합니다.
-
리포지토리 이름 아래에서 작업을 클릭합니다.
-
왼쪽 사이드바의 "관리" 섹션에서 실행기를 클릭합니다.
-
리포지토리에 사용할 수 있는 GitHub 호스팅 실행기 목록을 검토합니다.
-
실행기 레이블을 복사사하여 워크플로에서 사용하려면, 실행기 오른쪽에 있는 을 클릭한 다음 레이블 복사를 클릭합니다.
참고: 실행기를 만들 수 있는 권한이 있는 엔터프라이즈 및 조직 소유자는 해당 페이지에 새 실행기를 만들 수 있는 옵션이 있습니다. 엔터프라이즈 또는 조직 소유자인 경우, 실행기 목록의 우측 제일 위쪽에서 새 실행기를 클릭하여 리포지토리에 실행기를 추가하세요. 자세한 내용은 "대형 실행기 관리하기" 및 "자체 호스트형 실행기 추가"을 참조하세요.
지원되는 실행기 및 하드웨어 리소스
참고: 또한 GitHub에서는 Linux, Windows, macOS 가상 머신을 위한 더 큰 구성에서 사용할 수 있는 더 큰 실행기를 제공합니다. 자동 크기 조정은 기본적으로 사용 설정되어 있으며 Linux 및 Windows에서 선택적으로 전용 IP 주소를 사용할 수 있습니다. 자세한 내용은 "대규모 실행기 정보"을(를) 참조하세요.
Virtual Machine | 프로세서 (CPU) | 메모리 (RAM) | 스토리지 (SSD) | OS (YAML 워크플로 레이블) | 참고 |
---|---|---|---|---|---|
Linux | 2 | 7 GB | 14 GB |
ubuntu-latest , ubuntu-22.04 , ubuntu-20.04
|
ubuntu-latest 레이블은 현재 Ubuntu 22.04 실행기 이미지를 사용합니다.
|
Windows | 2 | 7 GB | 14 GB |
windows-latest , windows-2022 , windows-2019
|
windows-latest 레이블은 현재 Windows 2022 실행기 이미지를 사용합니다.
|
macOS | 3 | 14 GB | 14 GB |
macos-latest , macos-12 , macos-11
|
macos-latest 워크플로 레이블은 현재 macOS 12 실행기 이미지를 사용합니다.
|
macOS | 4 | 14 GB | 14 GB |
macos-13 [베타]
|
해당 없음 |
참고: -latest
실행기 이미지는 GitHub에서 제공하는 안정적인 최신 이미지이며 운영 체제 공급업체에서 사용할 수 있는 운영 체제의 최신 버전이 아닐 수도 있습니다.
경고: 베타 및 사용되지 않는 이미지는 “있는 그대로” “모든 오류를 포함하여” “사용 가능한 상태로” 제공되며, 서비스 수준 계약 및 보증에서 제외됩니다. 베타 이미지는 고객 지원에서 다루지 않을 수 있습니다.
워크플로 로그는 작업을 실행하는 데 사용되는 실행기를 나열합니다. 자세한 내용은 "워크플로 실행 기록 보기"을(를) 참조하세요.
더 큰 주자
표준 GitHub 호스팅된 실행기 외에도 GitHub은(는) GitHub Team 및 GitHub Enterprise Cloud 계획 고객에게 RAM, CPU, 디스크 공간이 더 많은 관리 가상 머신을 다양하게 제공합니다. 이러한 실행기는 GitHub에서 호스팅되며 실행기 애플리케이션 및 기타 도구가 미리 설치되어 있습니다.
자세한 내용은 "대규모 실행기 정보"을(를) 참조하세요.
지원되는 소프트웨어
GitHub 호스팅 실행기에 포함된 소프트웨어 도구는 매주 업데이트됩니다. 업데이트 프로세스는 며칠이 걸리며 main
분기에 사전 설치된 소프트웨어 목록은 전체 배포가 종료된 후 업데이트됩니다.
사전 설치된 소프트웨어
워크플로 로그에는 정확한 실행기에서 사전 설치된 도구에 대한 링크가 포함됩니다. 워크플로 로그에서 이 정보를 찾으려면 Set up job
섹션을 확장합니다. 해당 섹션에서 Runner Image
섹션을 확장합니다. Included Software
뒤의 링크는 워크플로를 실행한 실행기에 사전 설치된 도구에 대해 설명합니다.
자세한 내용은 "워크플로 실행 기록 보기"을(를) 참조하세요. 각 실행기 운영 체제에 대한 포함된 도구의 전체 목록은 실행기 이미지 리포지토리의 사용 가능한 이미지 설명서를 참조하세요.
GitHub 호스팅 실행기는 위의 참조에 나열된 패키지 외에도 운영 체제의 기본 제공 도구를 포함합니다. 예를 들어 Ubuntu 및 macOS 실행기는 grep
, find
, which
등 여러 기본 도구를 포함합니다.
Windows 및 Ubuntu 실행기 이미지의 각 빌드에 대한 SBOM(소프트웨어 자료 청구서)을 볼 수도 있습니다. 자세한 내용은 "GitHub Actions에 대한 보안 강화"을(를) 참조하세요.
사전 설치된 소프트웨어 사용
실행기에 설치된 소프트웨어와 상호 작용하는 작업을 사용하는 것이 좋습니다. 이 접근 방식에는 몇 가지 이점이 있습니다.
- 일반적으로 작업은 버전 선택, 인수 전달 기능 및 매개 변수와 같은 보다 유연한 기능을 제공합니다.
- 이를 통해 소프트웨어 업데이트와 관계없이 워크플로에 사용되는 도구 버전이 동일하게 유지됩니다.
요청하려는 도구가 있는 경우 actions/runner-images에서 문제를 여세요. 이 리포지토리에는 실행기에서 모든 주요 소프트웨어 업데이트에 대한 공지 사항도 포함되어 있습니다.
추가 소프트웨어 설치
GitHub 호스팅 실행기에 추가 소프트웨어를 설치할 수 있습니다. 자세한 내용은 "GitHub 호스팅 실행기 사용자 지정"을(를) 참조하세요.
GitHub 호스팅 실행기용 클라우드 호스트
GitHub는 GitHub Actions 실행기 애플리케이션이 설치된 Microsoft Azure의 Standard_DS2_v2
가상 머신에서 Linux 및 Windows 실행기를 호스트합니다. GitHub 호스팅 실행기 애플리케이션은 Azure Pipelines 에이전트의 포크입니다. 모든 Azure 가상 머신에 대해 인바운드 ICMP 패킷이 차단되므로 ping 또는 traceroute 명령이 작동하지 않을 수 있습니다. Standard_DS2_v2
리소스에 대한 자세한 내용은 Microsoft Azure 설명서의 “Dv2 및 DSv2-시리즈”를 참조하세요. GitHub는 Azure 데이터 센터에서 macOS 실행기를 호스팅합니다.
워크플로 연속성
GitHub Actions 서비스를 일시적으로 사용할 수 없는 경우 트리거된 후 30분 이내에 큐에 대기하지 않으면 워크플로 실행이 삭제됩니다. 예를 들어 워크플로가 트리거되고 GitHub Actions 서비스를 31분 이상 사용할 수 없는 경우 워크플로 실행이 처리되지 않습니다.
또한 워크플로 실행이 성공적으로 큐에 대기되었지만 GitHub 호스팅 실행기에서 45분 이내에 처리되지 않은 경우 대기 중인 워크플로 실행이 삭제됩니다.
관리자 권한
Linux 및 macOS 가상 머신은 모두 암호 없는 sudo
를 사용하여 실행됩니다. 명령을 실행하거나 현재 사용자보다 더 많은 권한이 필요한 도구를 설치해야 하는 경우 암호를 제공하지 않고 sudo
를 사용할 수 있습니다. 자세한 내용은 “sudo 설명서”를 참조하세요.
Windows 가상 머신은 UAC(사용자 계정 컨트롤)를 사용하지 않고 관리자로 실행하도록 구성됩니다. 자세한 내용은 Windows 설명서의 “사용자 계정 컨트롤의 작동 방식”을 참조하세요.
IP 주소
GitHub Actions가 GitHub 호스팅 실행기에서 사용하는 IP 주소 범위 목록을 얻으려면 GitHub REST API를 사용할 수 있습니다. 자세한 내용은 "메타" 엔드포인트의 응답에 있는 actions
키를 참조하세요.
Windows 및 Ubuntu 실행기는 Azure에서 호스트되며 이후 Azure 데이터 센터와 동일한 IP 주소 범위를 갖습니다. macOS 실행기는 GitHub의 자체 macOS 클라우드에서 호스트됩니다.
GitHub 호스팅 실행기의 IP 주소 범위가 너무 많으므로 이를 내부 리소스에 대한 허용 목록으로 사용하지 않는 것이 좋습니다. 대신 고정 IP 주소 범위가 있는 더 큰 실행기 또는 자체 호스팅 실행기를 사용하는 것이 좋습니다. 자세한 내용은 "대규모 실행기 정보" 또는 "자체 호스팅 실행기 정보"을(를) 참조하세요.
API에서 반환하는 GitHub Actions IP 주소 목록은 일주일에 한 번 업데이트됩니다.
etc/hosts
파일
GitHub호스트형 실행기는 다양한 암호 화폐 마이닝 풀 및 악성 사이트에 대한 네트워크 액세스를 차단하는 etc/hosts
파일로 프로비전됩니다. MiningMadness.com 및 cpu-pool.com 같은 호스트는 심각한 보안 위험을 초래하지 않도록 localhost로 다시 지정됩니다.
파일 시스템
GitHub는 가상 머신의 특정 디렉터리에서 작업 및 셸 명령을 실행합니다. 가상 머신의 파일 경로는 고정적이지 않습니다. GitHub에서 제공하는 환경 변수를 사용하여 home
, workspace
및 workflow
디렉터리에 대한 파일 경로를 생성합니다.
디렉터리 | 환경 변수 | 설명 |
---|---|---|
home | HOME | 사용자 관련 데이터를 포함합니다. 예를 들어 이 디렉터리에는 로그인 시도의 자격 증명이 포함될 수 있습니다. |
workspace | GITHUB_WORKSPACE | 작업 및 셸 명령이 이 디렉터리에서 실행됩니다. 작업은 후속 작업이 액세스할 수 있는 이 디렉터리의 콘텐츠를 수정할 수 있습니다. |
workflow/event.json | GITHUB_EVENT_PATH | 워크플로를 트리거한 웹후크 이벤트의 POST 페이로드입니다. GitHub는 작업 간에 파일 콘텐츠를 격리하기 위해 작업을 실행할 때마다 이를 다시 작성합니다. |
각 워크플로에 대해 GitHub가 만드는 환경 변수 목록은 "변수"을(를) 참조하세요.
Docker 컨테이너 파일 시스템
Docker 컨테이너에서 실행되는 작업에는 /github
경로 아래에 고정 디렉터리가 있습니다. 그러나 기본 환경 변수를 사용하여 Docker 컨테이너에서 파일 경로를 생성하는 것이 좋습니다.
GitHub는 /github
경로 접두사를 예약하고 작업에 대한 세 개의 디렉터리를 만듭니다.
/github/home
/github/workspace
- 참고: GitHub Actions는 기본 Docker 사용자(루트)가 실행해야 합니다. Dockerfile이USER
명령을 설정하지 않았는지 확인하세요. 그렇지 않으면GITHUB_WORKSPACE
에 액세스할 수 없습니다./github/workflow
추가 참고 자료
- "GitHub Actions 요금 청구 관리"
- 행렬 전략을 사용하여 여러 이미지에서 작업을 실행할 수 있습니다. 자세한 내용은 "작업에 행렬 사용"을(를) 참조하세요.