본문 바로가기
Infra

Github Actions self-hosted runner - Ubuntu 구성하기

by devson 2023. 8. 12.

Github Actions을 사용할 때 별다른 설정을 하지 않는다면 기본적으로 Github에서 제공하는 runner(Github-hosted runner)를 사용한다.

 

하지만 팀 내에서 Github Actions limit 금액을 너무 빨리 사용하거나, test나 build 속도가 너무 느리거나하면 자체 컴퓨팅 리소스를 사용하여 self-hosted runner 구성을 고려할 수 있다.

그러나 self-hosted runner 구성 무조건 옳은 선택이 아닐 수도 있다.

  • self-hosted runner의 경우 사용 제한이 있기 때문에 self-hosted runner 구성 전에 이를 먼저 고려해야한다.
  • 왠만한 케이스(CI/CD)에서는 Github에서 기본으로 제공하는 runner가 같은 성능의 AWS EC2에 비해 가격 측면에서 더 저렴하다.

그럼에도 팀 내의 상황 상 self-hosted runner를 구성하는 것이 옳은 경우가 있다.

그런 경우를 위해 이번 포스팅에서는 Github Actions self-hosted runner를 구성하는 방식에 대해 알아보도록 하겠다.

 


참고 - larger runner

Github에서 기본으로 제공하는 runner 인스턴스 보다 더 높은 사양의 인스턴스를 사용할 수 있는데 이를 larger runner라고 하며,

성능에 비례해서 비용이 올라가기 때문에 larger runner를 고려할 때는 금액적으로 올바른 선택일지 잘 고려해봐야한다.

https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#per-minute-rates


 

1. self-hosted runner를 구성하고자 하는 repository에서 Settings > Runners에 들어가서 New self-hosted runner 버튼을 클릭한다.

 

2. 그러면 아래와 같이 구성을 할 수 있는 메뉴얼이 쭉 나온다.

    self-hosted runner가 구성될 서버의 환경을 선택한 뒤

     아래 스크립트를 그대로 실행하면된다.

 

3. ./config.sh 커맨드 실행 시 아래와 같이 interactive 하게 설정을 진행한다.

$ ./config.sh --url https://github.com/ivvve/---./config.sh --url https://github.com/ivvve/---- --token ----------------------------

--------------------------------------------------------------------------------
|        ____ _ _   _   _       _          _        _   _                      |
|       / ___(_) |_| | | |_   _| |__      / \   ___| |_(_) ___  _ __  ___      |
|      | |  _| | __| |_| | | | | '_ \    / _ \ / __| __| |/ _ \| '_ \/ __|     |
|      | |_| | | |_|  _  | |_| | |_) |  / ___ \ (__| |_| | (_) | | | \__ \     |
|       \____|_|\__|_| |_|\__,_|_.__/  /_/   \_\___|\__|_|\___/|_| |_|___/     |
|                                                                              |
|                       Self-hosted runner registration                        |
|                                                                              |
--------------------------------------------------------------------------------

# Authentication


√ Connected to GitHub

# Runner Registration

# runner group을 설정한다 - 설정한게 없으니 default 값을 사용한다.
# 참고 - https://docs.github.com/en/enterprise-cloud@latest/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups
Enter the name of the runner group to add this runner to: [press Enter for Default]

# runner의 이름을 설정한다.
Enter the name of runner: [press Enter for ip-172-31-93-10] my-runner

# runner에 대한 label을 설정한다.
This runner will have the following labels: 'self-hosted', 'Linux', 'X64'
Enter any additional labels (ex. label-1,label-2): [press Enter to skip] my-runner

√ Runner successfully added
√ Runner connection is good

# Runner settings

# work 디렉토리를 설정한다 - default 값을 사용한다.
Enter name of work folder: [press Enter for _work]

√ Settings Saved.

 

./config.sh 커맨드 실행이 잘 되었다면 아래와 같이 새로 구성한 self-hosted runner가 추가되어있는 것을 확인할 수 있다.

runner 설치는 하였지만 실행을 하지않아 Status가 Offline이다.

 

 

4. ./run.sh 커맨드를 실행시켜 runner를 실행시킨다.

$ ./run.sh

√ Connected to GitHub

Current runner version: '2.307.1'
2023-08-12 06:19:29Z: Listening for Jobs

 

정상적으로 runner가 실행되었다면 아래와 같이 Status가 Idel 상태로 변경될 것이다.

 

5. runner는 Github Action을 실행 시 Docker를 사용하기 때문에 Docker가 설치되지 않은 경우 Docker를 설치해야한다.

설치는 아래를 참고하도록 하자.

 

6. 구성한 self-hosted runner 를 사용하기 위해 Github Actions script의 job 설정을 변경해준다.

runs-on에 action이 실행될 runner의 label을 지정해주면된다.

 

7. action을 실행하여 정상적으로 self-hosted runner를 사용하는지를 확인한다.

댓글