본문 바로가기
CI & CD

GitHub Actions self-hosted runner 설정하기

by KS피터 2023. 12. 4.

GitHub Actions를 이용하여 테스트 자동화, 배포 자동화, 기타 자동화 기능을 설정하기 위해서 Runner를 세팅하는 방법에 대한 글입니다.

기본적이 이론을 다루고 실제 세팅하는 방법에 대한 글을 작성하겠습니다.

목차

     

    GitHub Actions란?

    GitHub Actions에 대한 설명은 GitHub 공식 문서를 참고하면 다음과 같이 설명하고 있습니다.

     

    GitHub Actions 이해 - GitHub Docs

    GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged

    docs.github.com

     

    GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는
    CI/CD(지속적 통합/지속적 전달) 플랫폼입니다. 

     

    GitHub Actions는 설정한 Workflow에서 트리거가 발생 시 자동으로 수행할 Jobs을 동작하게 설정하는 자동화 프로세스 플랫폼입니다.

    이때 Workflow에 설정된 동작을 수행하기 위한 Runner인 즉 서버 설정이 필요합니다.

    • Workflows: 하나 이상의 작업을 실행하는 구성 가능한 자동화된 프로세스.
    • Events: Workflow 실행을 트리거하는 저장소의 특정 활동.
    • Jobs: 동일한 Runner에서 실행되는 Workflow의 일련의 단계
    • Actions: 복잡하지만 자주 반복되는 작업을 수행하는 GitHub Action 플랫폼의 사용자 지정 Application.
    • Runners: Workflow가 트리거 될 때 Workflow를 실행하는 서버

    이번 글에서는 GitHub Actions을 간단히 정리만 하고 다음 사용법에서 자세히 다루도록 하겠습니다.

    이번엔 Runner을 설정하는 방법에 대한 배워볼 예정입니다.

     

    GitHub self-hosted runner란?

    GitHub에서 제공하는 GitHub 호스팅 Runner를 이용하지 않고 자체 호스팅 Runner를 구축하는 방법입니다.

    GitHub-hostetd runner와 self-hosted runner의 차이점은 GitHub 공식 문서를 참고하면 다음 과 같습니다.

     

    About self-hosted runners - GitHub Docs

    You can host your own runners and customize the environment used to run jobs in your GitHub Actions workflows.

    docs.github.com

    GitHub-hosted runner:

    • 운영 체제, 사전 설치된 패키지 및 도구, Runner에 대한 자동 업데이트
    • GitHub에서 관리하고 유지 관리
    • 모든 Job 실행에 대해 깨끗한 인스턴스를 제공
    • GitHub 요금제에서 무료 시간(분)을 사용할 수 있으며, 무료 시간(분)을 초과한 후 분당 요금이 적용

    self-hosted runner:

    • Runner에 대해서만 자동 업데이트(자동 업데이트를 비활성화 가능). 운영 체제와 기타 모든 소프트웨어를 업데이트는 사용자가 책임
    • 이미 비용을 지불한 클라우드 서비스 또는 로컬 컴퓨터를 사용 가능
    • 하드웨어, 운영 체제, 소프트웨어 및 보안 요구 사항에 맞게 사용자 정의
    • 모든 작업 실행에 대해 깨끗한 인스턴스를 가질 필요 X
    • GitHub Actions 함께 무료로 사용할 있지만 Runner 머신 유지 관리 비용은 사용자가 부담

    위와 같이 각각의 장단점으로 비용적인 측면과 관리적인 측면에서 self-hosted runner로 결정하게 되었습니다.

     

    self-hosted runner 설정

    준비물: Runner 호스팅 할 머신

    저는 여기서 Mac을 이용해서 설정을 진행하도록 하겠습니다.

     

    1. GitHub 저장소 New self-hosted runner 진입

    1. Runner를 추가할 저장소 상단에 Settings 메뉴 진입
    2. 사이드에 Actions 하위에 Runners 메뉴 진입
    3. 상단에 New self-hosted runner 버튼 선택

    New self-hosted runner 버튼 화면
    New self-hosted runner 진입 결과 화면

    2. Runner 머신 환경 선택

    2-1. Runner 머신의 OS 선택

    머신 환경에 맞는 OS를 선택해줍니다. 저는 macOS를 선택했습니다.

    OS 선택 화면

    2-2. Runner 머신의 맞는 Architecture 선택

    머신 환경에 맞는 Architecuture를 선택해줍니다. 저는 x64를 선택했습니다.

    Arichitecture 선택 화면

    위 환경 선택 후 해당 선택지 하단에 나오는 스크립트를 터미널에 차례로 입력하시면서 진행하시면 이후 설정을 쉽게 진행하실 수 있습니다.

    3. Runner Application 다운로드

    3-1. 설치할 경로에 폴더를 생성하고 이동

    설치할 경로로 이동하여 터미널에서 아래 명령어 입력하여 actions-runner 폴더 생성 후 이동을 합니다.

    mkdir actions-runner && cd actions-runner

     

    생성 결과 화면

     

    3-2. Runner package 다운로드 진행

    터미널에 다음 명령어를 입력하여 Runner 패키지를 다운 받습니다.

    curl -o actions-runner-osx-x64-2.311.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.311.0/actions-runner-osx-x64-2.311.0.tar.gz

    Runner 패키지 다운로드 결과 화면

     

    3-3. 해시 검증(Optional)

    해시 검증은 선택 사항으로 필요하신 경우에 진행해주시면 됩니다.

    echo "f4d8d1dd850fd0889e0d250c82fa587b0e21934f8441143ee6772284b2ae6211  actions-runner-osx-x64-2.311.0.tar.gz" | shasum -a 256 -c

    해시 검증 결과 화면

     

    3-4. Runner 설치

    터미널에 다음 명령어를 입력하여 Runner 설치를 진행해줍니다. 실행 후 설치 완료 시 추가 메시지 없이 다음 행이 시작됩니다.

    tar xzf ./actions-runner-osx-x64-2.311.0.tar.gz

    Runner 설치 결과 화면

     

    4. Runner 설정

    터미널에 다음 스크립트를 입력하여 Runner 설정을 진행합니다. 저장소 URL과 토큰은 GitHub Runner 추가 페이지에 Configure에 있는 스크립트를 복사하면 쉽게 입력이 가능합니다.

    ./config.sh --url 저장소 url --token 토큰

    GitHub 페이지에 있는 설정 스크립트

    Runner 설정 스크립트를 실행하면 Runner Group을 설정하도록 입력이 나옵니다. 이부분은 조직 기능으로 개인 사용자의 경우 Enter를 입력하여 Default로 설정하시면 됩니다.

    터미널 Runner Group 입력 화면

    Group 설정 이후엔 Runner 이름을 설정하는 화면이 나옵니다. 기본값으로 컴퓨터 기본 이름이 들어가므로 변경을 원하시는 이름으로 설정하시면 됩니다. 수정이 불가능 하므로 신중하게 입력이 필요합니다.

    터미널 Runner 이름 입력  화면

    이름 입력 이후 Runner에 기본 추가될 라벨 표시와 함께 추가하고 싶은 라벨 입력이 표시됩니다. Skip을 원하는 경우 입력 없이 Enter로 진행하면 됩니다. 라벨은 추후 Runner 설정 완료 후에도 추가가 가능합니다.

    기본 라벨명 표시 및 라벨 입력 화면

    라벨 추가 이후 Runner가 실제 동작시 사용할 폴더명 입력이 표시됩니다. 입력 없이 Enter입력한 경우 _work명으로 폴더가 생성 됩니다.

    work 폴더명 입력 화면

    위에 입력사항들이 완료 되면 Runner 설정이 완료됩니다. 

    설정 관련 전체 진행 화면

    5. Runner 실행

    다음 명령어를 터미널에 입력하여 Runner를 실행하고 self-hosted 사용 준비가 완료됩니다. 이후 GitHub에서 Settings-Actions-Runners에 진입하면 Runner의 정보 및 상태를 확인할 수 있습니다.

    ./run.sh

    run 스크립트 실행 화면
    GitHub에 Runner 정보 및 상태 화면

     

    6. self-hosted runner 사용

    이제 Runner 설정은 완료 되었습니다. 이후 workflow 작성 시 jobs에 run-on을 self-hosted로 설정해서 사용하면 됩니다.

    # Workflow.yml 파일
    
    ...
    
    jobs:
      Job이름:
        runs-on: self-hosted
        
        ...

     

    마치며

    오늘은 GitHub Action을 사용하기 위한 기본 환경 구성을 진행해 보았습니다. 이후 실제 사용을 위한 Workflow 작성법에 대하여 진행하도록 하겠습니다.

    반응형