Skip to main content

github-hosted-runners를 위한 가상환경

깃허브는 워크플로우를 실행하기 위해 호스티드 가상 머신을 제공합니다. 가상 머신은 툴, 패키지, 그리고 깃허브 액션을 사용하기 위한 설정가능한 모든 것들의 환경을 의미합니다.

깃허브 호스티드 러너에 대하여#

깃허브로부터 호스팅되고 액션 러너 어플리케이션이 설치된 가상 머신입니다. 리눅스, 윈도우즈, 그리고 MacOS를 제공합니다.

깃허브 호스티드 러너를 사용할 때는 머신 maintenance와 업그레이드로 고민하지 않아도 됩니다. 워크플로우를 가상 머신이나 도커 컨테이너에서 바로 실행 시킬 수 있습니다.

워크플로우의 각 잡마다 러너 타입을 지정할 수도 있습니다. 각 잡은 가상 머신의 새 인스턴스에서 실행 되빈다. 모든 스텝들은 가상 머신의 같은 인스턴스에서 실행되며, 그 잡 안의 액션들은 파일시스템을 사용하여 정보를 공유하는 것이 허락됩니다.

클라우드 호스트#

깃허브는 리눅스와 윈도우러너를 Standard_DS2_v2 virtual machines in Microsoft Azure로 설치된 깃허브 러너 어플리케이션과 함께 제공하고 잇습니다. 깃허브 호스티드 러너는 Azure Pipelines Agent로 부터 포크됩니다. 더 자세한 내용은 DSv2-seires를 참고하세요.

깃허브는 맥스타디움을 맥OS 러너를 호스트하기 위해서 사용합니다.

깃허브 호스티드 러너의 관리권한#

리눅스와 맥OS 가상 머신은 passwordless sudo를 사용하여 작동합니다. 커맨드 실행이나 필요한 툴 설치(더 많은 권한을 필요로 하는)가 필요할 때, 패스워드를 요구하는 일 없는sudo를 사용할 수 있습니다. 자세한 내용은 Sudo Manual 참고

윈도우즈 가상 머신은 UAC 비활성화 상태로 관리자 권한으로 실행되게끔 구성되어 있습니다. 참고 How User Account Control works

지원되는 러너와 하드웨어 리소스#

각각의 버추얼 머신은 동일한 하드웨어 리소스를 사용가능하빈다.

  • 2-core CPU
  • 7 GB of RAM memory
  • 14 GB of SSD disk space
가상환경YAML 워크플로우 레이블
Windows Server 2019windows-latest
Ubuntu 18.04ubuntu-latest or ubuntu-18.04
Ubuntu 16.04ubuntu-16.04
macOS Catalina 10.15macos-latest

참고 깃허브 액션을 위한 소프트웨어 가상환경

깃허브 호스티드 러너의 IP 주소#

윈도우즈와 우분투 러너는 아즈레(Azure)에서 호스팅되며, Azure Data Cneter 같은 IP 주소 범위를 갖고있습니다. 현재, cast US 2 Azure region에서 호스팅되고 있지만, 더 많은 지역이 늘어날 것이비낟.

Microsoft는 Azure IP 범위 및 서비스 태그-퍼블릭 클라우드 웹 사이트에서 다운로드 할 수있는 JSON 파일로 매주 Azure IP 주소 범위를 업데이트합니다. 내부 리소스에 대한 무단 액세스를 방지하기 위해 허용 목록이 필요한 경우이 범위의 IP 주소를 사용할 수 있습니다.

JSON 파일은 values의 어레이를 갖고 잇습니다. 어레이 안에는 nameAzureCloud.eastus2id로 이루어진 오브젝트 안에 IP 주소가 적용되는데 이를 찾을 수 있습니다.

addressPrefixes 오브젝트 안의 범위로 아이피 주소를 지원함을 찾을 수 있습니다.

{
"changeNumber": 84,
"cloud": "Public",
"values": [
{
"name": "AzureCloud.eastus2",
"id": "AzureCloud.eastus2",
"properties": {
"changeNumber": 33,
"region": "eastus2",
"platform": "Azure",
"systemService": "",
"addressPrefixes": [
"13.68.0.0/17",
"13.77.64.0/18",
"13.104.147.0/25",
...
]
}
}
]
}

깃허브 호스티드 러너의 파일 시스템#

깃허브 액션과 쉘 커맨드를 특정 가상 기계의 디렉토리로 지정해 놓습니다. 가상 머신의 가상경로는 스태틱하지 않습니다. 깃허브에서 workspace, workflow, home 디렉토리의 파일 경로를 설정하는데 제공하는 환경변수를 사용하십시오.

디렉토리환경변수설명
homeHOMEuser-related 데이터를 포함합니다. 예를 들면 login attempt를 위한 credentials
workspaceGITHUB_WORKSPACE액션과 쉘 커맨드들이 실행되는 디렉토리. 이 디렉토리의 내용을 액션이 modify할 수 있습니다.
workflow/event.jsonGITHUB_EVENT_PATHPOST 페이로드. 깃허브는 액션 중간에 고립된 파일 내용으로 액션을 실행할 때마다 재작성됩니다.

환경변수 참고하기

도커 컨테이너 파일 시스템#

도커 컨테이너에서 실행되는 액션들은 /github 경로 아래의 스태틱한 디렉토리들을 가집니다. 그러나 디폴트 환경 변수들로 파일 경로를 구성하기를 강하게 권장합니다.

깃허브는 /github 경로 프리픽스를 미리 예정해 놓고, 액션을 위한 3개의 디렉토리를 만듭니다.

  • /github/home
  • /github/workspace - 주의: 깃허브 액션은 디폴트 도커 유저 (root)에 의해 실행되어야 합니다. USER 인스트럭션을 설정하지 않도록 주의하십시오. 그렇지 않으면 GITHUB_WORKSPACE에 접근 불가하게 될수도 있습니다.
  • github/workflow

더 읽기#

번역 생략합니다.