워크플로에서 자체 호스팅 러너 사용하기

워크플로에서 자체 호스팅 러너 사용하기

워크플로에서 자체 호스팅 러너를 사용하려면 레이블이나 그룹을 사용해 작업의 러너를 지정할 수 있어요. 기본 레이블, 커스텀 레이블, 러너 그룹을 조합해 작업을 올바른 러너로 라우팅할 수 있어요.

출처: 문서

본문

저장소에 사용 가능한 러너 보기

저장소에 repo: write 접근 권한이 있다면 저장소에 사용 가능한 러너 목록을 볼 수 있어요.

  1. GitHub에서 저장소의 메인 페이지로 이동해요.

  2. 저장소 이름 아래에서 Actions 탭을 클릭해요.

    "github/docs" 저장소의 탭 스크린샷. "Actions" 탭이 주황색 윤곽선으로 강조되어 있어요.

  3. 왼쪽 사이드바의 "Management" 섹션 아래에서 Runners을 클릭해요.

  4. 러너 목록 상단의 Self hosted 탭을 클릭해요.

  5. 저장소에 사용 가능한 자체 호스팅 러너 목록을 검토해요. 이 목록에는 자체 호스팅 러너와 Actions Runner Controller로 만든 러너 스케일 세트가 모두 포함돼요. 자세한 내용은 Actions Runner Controller를 참고하세요.

  6. 선택적으로, 워크플로에서 사용할 러너의 레이블을 복사하려면 러너 오른쪽의 케밥(세로 점 3개) 아이콘을 클릭한 다음 Copy label을 클릭해요.

Note

엔터프라이즈 및 조직 소유자는 이 페이지에서 러너를 만들 수 있어요. 새 러너를 만들려면 러너 목록 오른쪽 상단의 New runner을 클릭해 저장소에 러너를 추가할 수 있어요.

자세한 내용은 더 큰 러너 관리하기자체 호스팅 러너 추가하기를 참고하세요.

기본 레이블을 사용해 작업 라우팅하기

자체 호스팅 러너는 GitHub Actions에 추가될 때 특정 레이블을 자동으로 받아요. 이 레이블은 운영 체제와 하드웨어 플랫폼을 나타내는 데 사용돼요:

  • self-hosted: 자체 호스팅 러너에 적용되는 기본 레이블.
  • linux, windows, macOS: 운영 체제에 따라 적용.
  • x64, ARM, ARM64: 하드웨어 아키텍처에 따라 적용.

워크플로의 YAML을 사용해 작업을 이 레이블들의 조합으로 보낼 수 있어요. 이 예제에서 세 레이블 모두와 일치하는 자체 호스팅 러너가 작업을 실행할 자격이 돼요:

runs-on: [self-hosted, linux, ARM64]
  • self-hosted - 이 작업을 자체 호스팅 러너에서 실행해요.
  • linux - Linux 기반 러너만 사용해요.
  • ARM64 - ARM64 하드웨어 기반 러너만 사용해요.

기본 레이블 없이 개별 자체 호스팅 러너를 만들려면 러너를 만들 때 --no-default-labels 플래그를 전달해요.

커스텀 레이블을 사용해 작업 라우팅하기

언제든지 커스텀 레이블을 만들고 자체 호스팅 러너에 할당할 수 있어요. 커스텀 레이블을 사용하면 레이블 지정 방식에 따라 특정 유형의 자체 호스팅 러너로 작업을 보낼 수 있어요.

예를 들어 특정 유형의 그래픽 하드웨어가 필요한 작업이 있다면 gpu라는 커스텀 레이블을 만들고 해당 하드웨어가 설치된 러너에 할당할 수 있어요. 할당된 레이블 모두와 일치하는 자체 호스팅 러너가 작업을 실행할 자격이 돼요.

이 예제는 기본 레이블과 커스텀 레이블을 결합하는 작업을 보여줘요:

runs-on: [self-hosted, linux, x64, gpu]
  • self-hosted - 이 작업을 자체 호스팅 러너에서 실행해요.
  • linux - Linux 기반 러너만 사용해요.
  • x64 - x64 하드웨어 기반 러너만 사용해요.
  • gpu - GPU 하드웨어가 설치된 자체 호스팅 러너에 수동으로 할당된 커스텀 레이블이에요.

이 레이블들은 누적적으로 작동하므로, 자체 호스팅 러너는 작업을 처리할 자격이 되려면 네 레이블 모두를 가져야 해요.

그룹을 사용해 작업 라우팅하기

이 예제에서 러너는 build-runners라는 그룹에 추가되었어요. runs-on 키가 build-runners 그룹의 사용 가능한 러너에 작업을 보내요:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: 
      group: build-runners
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v7
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

레이블과 그룹을 사용해 작업 라우팅하기

그룹과 레이블을 결합하면 러너는 작업을 실행할 자격이 되려면 두 요구 사항을 모두 충족해야 해요.

이 예제에서 runs-on 키는 grouplabels를 결합해, 그룹 내에서 일치하는 레이블도 가진 사용 가능한 러너에 작업을 라우팅해요:

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on:
      group: ubuntu-runners
      labels: ubuntu-24.04-16core
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v7
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v