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를 고려할 때는 금액적으로 올바른 선택일지 잘 고려해봐야한다.
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를 설치해야한다.
설치는 아래를 참고하도록 하자.
- Unbuntu에서 Docker 설치 - https://docs.docker.com/engine/install/ubuntu/
- non-root 유저가 Docker를 사용할 수 있도록 설정 - https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
6. 구성한 self-hosted runner 를 사용하기 위해 Github Actions script의 job 설정을 변경해준다.
runs-on에 action이 실행될 runner의 label을 지정해주면된다.
7. action을 실행하여 정상적으로 self-hosted runner를 사용하는지를 확인한다.
'Infra' 카테고리의 다른 글
[Docker Compose] depense_on으로 서비스 의존 관계 설정하기 (0) | 2024.10.30 |
---|
댓글